Как правильно свернуть строки 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
Другие вопросы по тегам