Проблема MySQL: объединение нескольких результатов / строк, вызванных n-m - PullRequest
0 голосов
/ 19 января 2010

Я попробовал почти все, что мог, чтобы решить следующую проблему.Пока безуспешно.Но должно быть решение, потому что я не думаю, что дело слишком особенное.Я думаю, что я просто кровавый новичок ;-) Мне нужно присоединиться к объединению слияния или что-то еще ;-) в MySQL, чтобы решить следующую проблему ...

CASE: три таблицы "posts", "tagmap" и"tags"

В таблице tagmap хранятся все отношения NM, идентификаторы записей и идентификаторы тегов
В таблице tags хранится tag_name с тегом id
В таблице posts хранятся post_title и post_id

 posts    post_id    post_title
          1          Charlie Chaplin Painting

 tagmap   id         post_id    tag_id
          100        1          12
          101        1          13
          102        1          14

 tags     tag_id     tag_name
          12         Acryl
          13         Chalk
          14         Poster

То, чего я пытаюсь добиться, - это получить результат в виде следующего, где все связанные теги объединены в одном столбце.Либо по списку через запятую, либо через пробел:
post_id => 1, post_title => Чарли Чаплин ... tag_name => Акрил, Мел, Плакат

Но до сих пор единственнымя мог бы получить следующие результаты:
post_id => 1, post_title => Чарли Чаплин ... tag_name => Acryl
post_id => 1, post_title => Чарли Чаплин ... tag_name=> Chalk
post_id => 1, post_title => Чарли Чаплин ... tag_name => Плакат

Кто-нибудь знает, как этого можно достичь ... Любая помощь будет высоко оценена и спасибо заранеевсем, кто мог бы помочь мне с этим; -)

1 Ответ

2 голосов
/ 19 января 2010

Использование:

  SELECT p.post_id,
         p.post_title,
         GROUP_CONCAT(t.tag_name ORDER BY t.tag_name SEPARATOR ', ')
    FROM POSTS p
    JOIN TAGMAP tm ON tm.post_id = p.post_id
    JOIN TAGS t ON t.tag_id = tm.tag_id
GROUP BY p.post_id, p.post_title

Ссылка:

...