连接两个表而不混合行
Join two tables without mixing rows
我想连接 2 个表,对于每个连接结果,我需要一个单独的行,但我的查询结果的行不知何故混合了:
架构 + 数据:
我的查询:
SELECT Table_A.id,
Table_B.id,
Table_C.id
FROM Table_A
LEFT JOIN Table_B
ON Table_B.id_a = Table_A.id
LEFT JOIN Table_C
ON Table_C.id_a = Table_A.id
结果:
我想要的(3 行 - 由连接表的 ID 列分隔):
问:我做错了什么?
=> 你可以这样说:我需要 id_a
是 1
+ table_a.id=1
的所有行。也许 JOIN
是错误的方法..?
你需要 INNER JOIN UNION
:
SELECT A.id A_Id, B.id B_Id, ''c_id
FROM Table_A A
INNER JOIN Table_B B ON B.id_a = A.id
UNION ALL
SELECT A.id A_Id, '' B_Id, c.id c_id
FROM Table_A A
INNER JOIN Table_C C ON A.id = C.id_a
我想连接 2 个表,对于每个连接结果,我需要一个单独的行,但我的查询结果的行不知何故混合了:
架构 + 数据:
我的查询:
SELECT Table_A.id,
Table_B.id,
Table_C.id
FROM Table_A
LEFT JOIN Table_B
ON Table_B.id_a = Table_A.id
LEFT JOIN Table_C
ON Table_C.id_a = Table_A.id
结果:
我想要的(3 行 - 由连接表的 ID 列分隔):
问:我做错了什么?
=> 你可以这样说:我需要 id_a
是 1
+ table_a.id=1
的所有行。也许 JOIN
是错误的方法..?
你需要 INNER JOIN UNION
:
SELECT A.id A_Id, B.id B_Id, ''c_id
FROM Table_A A
INNER JOIN Table_B B ON B.id_a = A.id
UNION ALL
SELECT A.id A_Id, '' B_Id, c.id c_id
FROM Table_A A
INNER JOIN Table_C C ON A.id = C.id_a