1

我从表中获取值时遇到问题。

我需要这样的东西

A.Id a1
  B.Id b1
     C.Id c1
  B.Id b2
     C.Id c2
     C.Id c3
     C.Id c4

表 A 和 B 以及表 B 和 C 连接在一起。表 A 可以具有表 B 中的一个/零或多个值。同样的情况适用于表 C 中的值。

我需要在表 B 上的表 A 上执行左连接,并在表 C 上的表 B 上执行左连接。

我尝试使用表 A 和 B 的左连接,但不知道如何在左连接中执行左连接。

那可能吗?它的语法是什么样的?

编辑:数据看起来像这样

ZZN1  P1  NULL
ZZN1  P2  NAB1
ZZN2  P3  NAB2
ZZN2  P3  NAB3
4

2 回答 2

4

无需嵌套左连接,您可以简单地将它们展平并让您的 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

于 2019-10-18T08:05:33.167 回答
1
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
于 2019-10-18T09:06:42.773 回答