连接两个表而不混合行

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_a1 + 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