6

2 つのテーブルから、コンマで区切られた 1 つのレコード内のグループ内のすべてのアイテムを返すクエリを作成する必要があります。以下の結果の例をご覧ください。

アイテム表:

--------------------
Name    |  Group_ID
--------------------
item1   |  1
item2   |  1
item3   |  3    

グループテーブル:

--------------------
ID    |  Name
--------------------
 1    |  Group1
 3    |  Group3     

私が探している結果:

------------------------------
GId  |  Items  
------------------------------
 1   |  item1, item2
 3   |  item3      
4

3 に答える 3

9

GROUP_CONCATを使用

SELECT group_concat(Name) FROM table
于 2013-08-28T19:51:29.307 に答える
0

GROUP_CONCAT と GROUP BY を使用する必要があります

次のようになります。

SELECT gr.id, GROUP_CONCAT(item.name SEPARATOR ',')
FROM  `group` gr LEFT JOIN item
ON(gr.id=item.group_id)
GROUP BY gr.id

このクエリは、アイテムが関連付けられていないグループを表示します。これらのグループが必要ない場合、最良のオプションは @peterms です

于 2013-08-28T19:52:53.087 に答える
0

目的の出力によると、グループごとに少なくとも 1 つのアイテムが常にあると仮定するか、まだアイテムを持たないグループに興味がある場合は、テーブルに参加する必要さえありません。テーブルGROUP_CONCAT()に貼るだけitems

SELECT group_id gid, GROUP_CONCAT(Name) items
  FROM items
 GROUP BY group_id

出力:

| | GID | アイテム |
|-----|-------------|
| | 1 | アイテム1、アイテム2 |
| | 3 | アイテム3 |

これがSQLFiddleのデモです

アイテムがあるかどうかに関係なくすべてのグループを選択する必要がある場合は、@ 0r10nの回答のように外部結合を使用する必要があります

そのシナリオのSQLFiddleデモを次に示します。

于 2013-08-28T19:55:14.737 に答える