我在从表中获取值时遇到问题。
我需要这样的东西
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
答案 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
。另一方面,如果第一个左连接成功,则第三个左连接可能成功也可能不成功,这取决于相关的null
在bid
中是否可用。
答案 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