1

我有父表AA有几个子表,例如B, C, D, E, F,G 子表没有相互链接。它们仅与A. A有一个Id在所有子表中用作外键的键。

加入这些表的最佳方法应该是什么,以便我可以创建一个单一的视图?

4

2 回答 2

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

编辑

我添加了一种添加子项的方法。我更倾向于使它们在视觉表示中明显。但请注意...如果这导致子子项有其他子项等,则您的结构可能不是最佳的。

于 2013-08-08T12:41:18.423 回答
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
于 2013-08-08T12:41:00.120 回答