我有父表A
。
A
有几个子表,例如B
, C
, D
, E
, F
,G
子表没有相互链接。它们仅与A
.
A
有一个Id
在所有子表中用作外键的键。
加入这些表的最佳方法应该是什么,以便我可以创建一个单一的视图?
由于父级可能在其中一些表中有子行,因此您必须使用 LEFT OUTER JOIN。
LEFT OUTER JOIN 连接两个表,返回 LEFT 表的所有行,在本例中为 A 和来自其他表的所有匹配项。当没有匹配时,它将在没有匹配的表的相应列中返回 NULL。
SELECT *
FROM A
LEFT OUTER JOIN B
ON A.Id = B.ParentID
LEFT OUTER JOIN C
ON A.Id = C.ParentID
LEFT OUTER JOIN P
ON C.Id = P.ParentID
LEFT OUTER JOIN Q
ON C.Id = Q.ParentID
LEFT OUTER JOIN D
ON A.Id = D.ParentID
LEFT OUTER JOIN E
ON A.Id = E.ParentID
LEFT OUTER JOIN F
ON A.Id = F.ParentID
LEFT OUTER JOIN X
ON F.Id = X.ParentID
LEFT OUTER JOIN Y
ON F.Id = Y.ParentID
LEFT OUTER JOIN G
ON A.Id = G.ParentID
编辑
我添加了一种添加子项的方法。我更倾向于使它们在视觉表示中明显。但请注意...如果这导致子子项有其他子项等,则您的结构可能不是最佳的。
select <wanted columns>
from a
left join b
on a.id = b.a_id
left join c
on a.id = c.a_id
left join d
on a.id = d.a_id