左连接内部左连接

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。另一方面,如果第一个左连接成功,那么第三个左连接可能会成功,也可能不会成功,这取决于相关的 bidc.

中是否可用。
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