我有父表A
。
A
包含的子表很少,例如B
,C
,D
,E
,F
,G
子表没有相互链接。它们仅与A
相关联。
A
有一个键Id
,在所有子表中用作外键。
加入这些表的最佳方法应该是什么,以便我可以创建一个单独的视图?
答案 0 :(得分:5)
由于父级可能在某些表中有子行,因此必须使用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
修改强>
我添加了一种添加子项的方法。我更倾向于他们,只是为了让他们在视觉表现中显而易见。但要注意......如果这导致子孙有其他子孙等,那么你的结构可能不是最优的。
答案 1 :(得分:2)
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