Как правильно свернуть строки MySQL в один список
У меня есть запрос в форме
SELECT pub.id, topic.id, pub.title, etc...
FROM pub, topic, link
WHERE (matching logic)
который возвращается в виде
pub.id | topic.id | pub.title
---------------------------------
x1 | a | y1
x1 | b | y1
x1 | ... | y1
x2 | c | y2
x2 | d | y2
x2 | ... | y2
что я действительно хочу, это ответ формы
pub.id | topic.id | pub.title
---------------------------------
x1 | a, b ... | y1
x2 | c, d ... | y2
(Я не думаю, что логика сопоставления важна, но я опубликую ее при необходимости.)
я пробовал group_concat()
а также coalesce
, но ничего не работает. Любая помощь?
1 ответ
Решение
Вы не забыли включить GROUP BY
в вашем GROUP_CONCAT
тестовое задание?
Вы не можете объединить группу, если не группируете данные.
Вот рабочий пример: http://sqlfiddle.com/
Это должно составлять:
SELECT pub.id, GROUP_CONCAT(topic.id SEPARATOR ','), pub.title
FROM pub, topic
WHERE (matching logic)
GROUP BY pub.id, pub.title