3

私は3つのテーブル(多対多の関係)を持っています:items、、、items_to_tagsおよびtags。およびテーブルitemstagsは一意のID列があり、items_to_tagsテーブルには列item_idと。がありますtag_iditemsおよびテーブルからすべての結果を選択する方法はありますtagsが、すべての結果が同じレコードにマージされますか?

たとえば、私がこのデータを持っている場合:

  • items

    id     name
    1      'item1'
    2      'item2'
    
  • tags

    id     name
    1      'tag1'
    2      'tag2'
    3      'tag3'
    
  • items_to_tags

    item_id    tag_id
    1          1
    1          2
    1          3
    2          3
    

クエリの結果は次のようになります。

item_id   item_name   tags
1         'item1'     'tag1,tag2,tag3'
4

2 に答える 2

6

MySQLを使用できますGROUP_CONCAT()

select i.id,
  i.name,
  group_concat(t.name SEPARATOR ', ') tags
from items i
left join items_to_tags it
  on i.id = it.item_id
left join tags t
  on it.tag_id = t.id
group by i.id, i.name

SQL FiddlewithDemoを参照してください

結果:

| ID |  NAME |             TAGS |
---------------------------------
|  1 | item1 | tag1, tag2, tag3 |
|  2 | item2 |             tag3 |
于 2012-11-15T21:05:18.673 に答える
0

これは、MySQLのGROUP_CONCATを使用して実行できます。

于 2012-11-15T21:00:25.403 に答える