MySQL GROUP_CONCAT

[Удален]
542

Есть 2 таблицы.

В первой хранятся общие сведения об организациях: id, название, адрес сайта и т.д.

Во второй - адреса филиалов и ближайшие станции метро: org_id, адрес, метро.

У одной организации может быть несколько филиалов и, соответственно, несколько станций метро.

При этом некоторые организации могут находиться за МКАДом и не иметь станции метро вовсе.

Хочется выбрать все организации и для тех, у кого есть метро, выбрать и названия станций тоже.

Т.е. на выходе: id | название | метро, метро, метро

SELECT t1.id, t1.org_name, GROUP_CONCAT(t2.metro ORDER BY t2.metro SEPARATOR ',') FROM t1,t2 WHERE t1.id=t2.org_id GROUP BY t2.org_id

Вышеприведенный запрос выберет только те организации, которые есть во 2ой таблице.

Как выбрать все? :)

edogs software
На сайте с 15.12.2005
Offline
775
#1

Попробуйте

SELECT t1.id, t1.org_name, GROUP_CONCAT(t2.metro ORDER BY t2.metro SEPARATOR ',') FROM t1 left join t2 on t1.id=t2.org_id GROUP BY t1.id
Разработка крупных и средних проектов. Можно с криптой. Разумные цены. Хорошее качество. Адекватный подход. Продаем lenovo legion в спб, дешевле магазинов, новые, запечатанные. Есть разные. skype: edogssoft
[Удален]
#2
edogs:
Попробуйте
SELECT t1.id, t1.org_name, GROUP_CONCAT(t2.metro ORDER BY t2.metro SEPARATOR ',') FROM t1 left join t2 on t1.id=t2.org_id GROUP BY t1.id

Шикарно. Спасибо. :)

Оптимизировать не получится?

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий