powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / помогите с запросом
5 сообщений из 5, страница 1 из 1
помогите с запросом
    #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
помогите с запросом
    #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
помогите с запросом
    #39196662
anvano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, тройку канеш на двойку надо поменять, если надо именно два

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


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

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


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