连接父表和子表的最佳方式 [英] Best way to join parent and child tables

查看:120
本文介绍了连接父表和子表的最佳方式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有父表 A
A 有几个子表,例如 B C D E F code> G
子表不互相链接。它们只链接到 A
A 有一个键 Id ,用作所有子表中的外键。

I have Parent table A. A has few child tables such as B,C,D,E,F,G The child tables are not linked to each other. They are only linked to A. A has a key Id which is used as foreign key in all the child tables.

应该是什么是最好的方式来连接这些表,所以我可以创建一个单一的视图呢?

What should be the best way to join these tables so I can create a single view on this?

推荐答案

由于父级在某些表中可能有子行,因此必须使用LEFT OUTER JOIN。

Since a parent may have a child row in some of those tables you must use LEFT OUTER JOIN.

LEFT OUTER JOIN连接两个返回LEFT表的所有行的表,在本例中为A和其他表中的所有匹配项。当没有匹配时,它将在没有匹配的表的相应列中返回NULL。

LEFT OUTER JOIN joins two tables returning all the rows of the LEFT table, in this case A and all the matches from the other tables. When there is no match it will return NULL in the corresponding columns of the tables that there was no match.

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

EDIT

我添加了一个添加子字符的方法。我想让他们更加只是为了使它们在视觉表示中显而易见。但是要小心...如果这导致子子孙有其他子子孙等也许你的结构不是最佳。

I have added a way to add subchilds. I have intented them more just to make them obvious in a visual representation. But beware...if this lead to subchildren have other subchildren etc maybe your structure is not optimal.

这篇关于连接父表和子表的最佳方式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆