2

次のデータを含む次の 2 つのテーブルがあります。2 つのテーブルが結合されたときにすべてのデータを返したいと思います。たとえば、SELECT t1.data, t2.data FROM t1 INNER JOIN t2 ON t2.t1_id=t2.id WHERE t1.id=1; 今はトリッキーな部分です。3 行ではなく 1 行だけを返したいのですが、t2.data を CSV にしたいと考えています。たとえば、上記のクエリは返されます"bla1","hi1,hi2,hi2"(結合結果がない場合は、"," ではなく null または "")。これは SQL だけでかなり簡単ですか、それとも PHP などを使用したほうがよいでしょうか? もしそうなら、SQLだけで、どのように? ありがとう

t1
-id
-data

t2
-id
-t1_id
-data

t1
-id=1, data="bla1"
-id=2, data="bla2"
-id=3, data="bla3"

t2
-id=1, t1_id=1, data=hi1
-id=2, t1_id=1, data=hi2
-id=3, t1_id=1, data=hi3
-id=4, t1_id=2, data=hi4
4

3 に答える 3

2

GROUP_CONCAT区切り文字 (デフォルトではカンマ) を使用して、グループから null 以外の値を連結する whichを使用できます。

SELECT t1.data, GROUP_CONCAT(t2.data)
FROM t1 JOIN t2 
 ON t1.id = t2.t1_id
WHERE t1.id = 1;

SQLFiddle の例: http://sqlfiddle.com/#!2/68154/5

于 2013-09-05T12:43:37.310 に答える
0
    SELECT concat(t1.data,',',group_concat(t2.data)) FROM t1 INNER JOIN t2 ON
 t2.t1_id=t1.id WHERE t1.id=1
    group by t1.data
于 2013-09-05T12:47:40.497 に答える