Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / помогите с запросом / 5 сообщений из 5, страница 1 из 1
20.03.2016, 17:57:12
    #39196534
noop325
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с запросом
имеется несколько таблиц в базе, а именно ( contacts, firms, subcategory, category)
есть запрос формирующий итоговую выдачу методом сбора со всех этих таблиц который потом экспортируется в эксель:


SELECT f.id, f.name, f.city_name, f.geometry_name, f.office, p.rawdata as phone, e.rawdata as email, w.rawdata as website, f.lon, f.lat, c.name as category, s.name as subcategory FROM `firm` AS f
LEFT JOIN contacts AS p ON p.firm_id = f.id AND (p.type = 'phone' OR p.type = 'mobile')
LEFT JOIN contacts AS e ON e.firm_id = f.id AND e.type = 'email'
LEFT JOIN contacts AS w ON w.firm_id = f.id AND w.type = 'website'
LEFT JOIN firm_to_subcategory AS sc ON sc.firm_id = f.id
LEFT JOIN subcategory AS s ON sc.subcategory_id = s.id
LEFT JOIN category AS c ON s.category_id = c.id
GROUP BY p.rawdata;

необходимо: составить запрос на усечение в таблице contacs берущиеся оттуда телефоны для организаций до 2-ух! сейчас количество телефонов составляет в среднем минимум 3-4. нужно только 2 с сохранением общей структуры
каждой организации соответствует свой id


ребята, помогите, все голову сломал уже


...
Рейтинг: 0 / 0
20.03.2016, 23:45:43
    #39196660
anvano
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с запросом
Ну, если устроят два телефона в виде одной строчки через запятую, то можно так:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SELECT f.id, f.name, f.city_name, f.geometry_name, f.office
       , substring_index(group_concat(p.rawdata order by rand()), ',', 3) as phones
       , e.rawdata as email, w.rawdata as website, f.lon, f.lat, c.name as category, s.name as subcategory 
FROM `firm` AS f 
LEFT JOIN contacts AS p ON p.firm_id = f.id AND (p.type = 'phone' OR p.type = 'mobile')
LEFT JOIN contacts AS e ON e.firm_id = f.id AND e.type = 'email'
LEFT JOIN contacts AS w ON w.firm_id = f.id AND w.type = 'website'
LEFT JOIN firm_to_subcategory AS sc ON sc.firm_id = f.id
LEFT JOIN subcategory AS s ON sc.subcategory_id = s.id
LEFT JOIN category AS c ON s.category_id = c.id
GROUP BY f.id, f.name, f.city_name, f.geometry_name, f.office,e.rawdata, w.rawdata, f.lon, f.lat, c.name, s.name
...
Рейтинг: 0 / 0
20.03.2016, 23:48:41
    #39196662
anvano
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с запросом
Да, тройку канеш на двойку надо поменять, если надо именно два

И еще, в этом решении будут браться СЛУЧАЙНЫЕ два телефона из ваших 3-4 :) ибо
Код: plsql
1.
ORDER BY rand()


если нужны конкретные телефоны, то укажите нужный порядок сортировки, по ID контакта или по значению...
...
Рейтинг: 0 / 0
21.03.2016, 23:46:09
    #39197547
noop325
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с запросом
а как можно заключить в кавычки каждое значение телефона?
пример: "+7xxxxxxx","+7xxxxxxx"
...
Рейтинг: 0 / 0
22.03.2016, 05:29:28
    #39197583
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с запросом
noop325,

читать справку по concat
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / помогите с запросом / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]