左联接内左联接

时间:2019-10-18 07:59:37

标签: sql sql-server database left-join

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

我需要这样的东西

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中的值。

我需要在表A上对表B进行左联接,并在表B上对表C进行左联接。

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

有可能吗?语法将是什么样的?

编辑: 数据看起来像这样

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

2 个答案:

答案 0 :(得分:1)

无需嵌套左联接,您只需将它们展平并让RDMBS处理逻辑即可。

示例架构:

{
    "ID": "1",
    "Name": "admin",
    "Permissions": {
        "Users": ["Read", "Edit"],
        "Management": ["Read"]
    }
}

查询:

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。另一方面,如果第一个左连接成功,则第三个左连接可能成功也可能不成功,这取决于相关的nullbid中是否可用。

答案 1 :(得分: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