0

私は今、次の問題を解決するためにできることのほとんどすべてを試しました。これまでのところ成功していません。しかし、ケースが特別すぎるとは思わないので、解決策があるに違いありません。私はただの初心者だと思います;-)ユニオンマージなどに参加する必要があります;-) MySQLで次の問題を解決します...

CASE: 3 つのテーブル "posts"、"tagmap"、"tags"

tagmapテーブルには、すべての nm リレーション、投稿の ID とタグ
IDが格納されます タグテーブルには、タグIDとともにtag_nameが格納さます

 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

私が達成しようとしているのは、関連するすべてのタグが1つの列にマージされる次のような結果を得ることです。カンマ区切りのリストまたはスペース:
post_id => 1, post_title => Charlie Chaplin... tag_name => Acryl, Chalk, Poster

しかし、これまでのところ、次のような複数の結果しか得られませんでした:
post_id => 1, post_title => Charlie Chaplin... tag_name => Acryl
post_id => 1, post_title => Charlie Chaplin... tag_name => Chalk
post_id => 1, post_title => チャーリー・チャップリン... tag_name => ポスター

誰もこれを達成する方法を知っていますか...どんな助けでも大歓迎です.これで私を助けることができるすべての人に事前に感謝します;-)

4

1 に答える 1

2

使用する:

  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

参照:

于 2010-01-19T18:33:02.270 に答える