左连接内部左连接
Left join inside left join
我在从 table 中获取值时遇到问题。
我需要这样的东西
A.Id a1
B.Id b1
C.Id c1
B.Id b2
C.Id c2
C.Id c3
C.Id c4
Table A 和 B 连在一起,table B 和 C 连在一起。
Table A 可以有 one/zero 或更多来自 table B 的值。同样的情况是来自 table C 的值。
我需要在 table A over table B 上执行左连接,在 table B over table C 上执行左连接。
我尝试使用来自 table A 和 B 的左连接,但不知道如何在该左连接内执行左连接。
这可能吗?它的语法是什么样的?
编辑:
数据看起来像这样
ZZN1 P1 NULL
ZZN1 P2 NAB1
ZZN2 P3 NAB2
ZZN2 P3 NAB3
无需嵌套左联接,您可以简单地将它们展平并让您的 RDMBS 处理逻辑。
示例架构:
a(id)
b(id, aid) -- aid is a foreign key to a(id)
c(id, bid) -- aid is a foreign key to b(id)
查询:
select a.id, b.id, c.id
from a
left join b on b.aid = a.id
left join c on c.bid = b.id
如果第一个左连接不成功,那么第三个也不能执行,因为连接列 b.id
将是 null
。另一方面,如果第一个左连接成功,那么第三个左连接可能会成功,也可能不会成功,这取决于相关的 bid
在 c
.
中是否可用。
SELECT A.Name, B.Name , C.Name
FROM A
LEFT JOIN B ON A.id = B.id
LEFT JOIN C ON B.id = C.id
我在从 table 中获取值时遇到问题。
我需要这样的东西
A.Id a1
B.Id b1
C.Id c1
B.Id b2
C.Id c2
C.Id c3
C.Id c4
Table A 和 B 连在一起,table B 和 C 连在一起。 Table A 可以有 one/zero 或更多来自 table B 的值。同样的情况是来自 table C 的值。
我需要在 table A over table B 上执行左连接,在 table B over table C 上执行左连接。
我尝试使用来自 table A 和 B 的左连接,但不知道如何在该左连接内执行左连接。
这可能吗?它的语法是什么样的?
编辑: 数据看起来像这样
ZZN1 P1 NULL
ZZN1 P2 NAB1
ZZN2 P3 NAB2
ZZN2 P3 NAB3
无需嵌套左联接,您可以简单地将它们展平并让您的 RDMBS 处理逻辑。
示例架构:
a(id)
b(id, aid) -- aid is a foreign key to a(id)
c(id, bid) -- aid is a foreign key to b(id)
查询:
select a.id, b.id, c.id
from a
left join b on b.aid = a.id
left join c on c.bid = b.id
如果第一个左连接不成功,那么第三个也不能执行,因为连接列 b.id
将是 null
。另一方面,如果第一个左连接成功,那么第三个左连接可能会成功,也可能不会成功,这取决于相关的 bid
在 c
.
SELECT A.Name, B.Name , C.Name
FROM A
LEFT JOIN B ON A.id = B.id
LEFT JOIN C ON B.id = C.id