-1

構造とデータを以下に示す2つのテーブルがあります。

table1
id, name
1, abc
2, xyz


table2
id, table1_id, type, other_name
1, 1, 1, hello
2, 1, 2, world
3, 2, 1, wonder
4, 2, 2, this world

次のような列を持つ行の結果が必要です。

table1.id, table1,name, table2.other_name where table2.type=1, table2.other_name where table2.type=2

私はもう試した:

SELECT
table1.id, table1,name,
IF(table2.type=1, table2.other_name,NULL) AS current_name,
IF(table2.type=2, table2.other_name,NULL) AS previous_name
FROM table1
LEFT JOIN table2 ON table2.table1_id = table1.id
GROUP BY table1.id;

しかし、それは次のように返されます:

1, abc, hello, NULL
2, xyz, wonder, NULL

私は次のような結果を得たいのですが:

1, abc, hello, world
2, xyz, wonder, this world

みんな助けてください!

4

1 に答える 1

0

「group by」で複数行を操作する集計関数を使用する必要があります。また、table1.name を「group by」の下に移動します。

SELECT table1.id, 
       table1.name,
       max(IF(table2.type=1, table2.other_name, NULL)) AS current_name,
       max(IF(table2.type=2, table2.other_name, NULL)) AS previous_name
FROM table1
LEFT JOIN table2 ON table2.table1_id = table1.id
GROUP BY table1.id, table1.name;
于 2013-11-09T10:36:35.220 に答える