gpt4 book ai didi

sql - sql中的三种方式连接

转载 作者:行者123 更新时间:2023-12-02 22:13:11 24 4
gpt4 key购买 nike

我有三个表,标题为“Guest”、“Guest_Address”和“Acutal_Address”。Guest_Address 是 guest 和 acutal_address 之间的链接表。这是我到目前为止所拥有的。

  SELECT GUEST_ADDRESS.ADDRESS_CODE,(GUEST_FNAME+' '+GUEST_LNAME) AS GUEST_NAMES
FROM GUEST JOIN GUEST_ADDRESS
ON GUEST.ADDRESS_NUM = GUEST_ADDRESS.ADDRESS_NUM;

这仅连接Guest和Guest_address表,但我需要连接Guest和Acutal_Address。这是 ERD。 enter image description here

最佳答案

您想要做的是对actual_address 表进行额外的联接,如下所示:

  SELECT GUEST_ADDRESS.ADDRESS_CODE,(GUEST_FNAME+' '+GUEST_LNAME) AS GUEST_NAMES
FROM GUEST
JOIN GUEST_ADDRESS ON GUEST.ADDRESS_NUM = GUEST_ADDRESS.ADDRESS_NUM
JOIN ACTUAL_ADDRESS ON GUEST_ADDRESS.ADDRESS_CODE = ACTUAL_ADDRESS.ADDRESS_CODE

介意我问一下为什么你有那个链接表吗?客人可以有多个地址吗?如果是这种情况,我会根据 GUEST_ID 将连接从 GUEST_ADDRESS 更改为 GUEST,而不是 ADDRESS_NUM 作为使用 ADDRESS_NUM 使两个表之间的关系成为一对一关系,而不是一对多

还值得注意的是,如果 ACTUAL_ADDRESS 表中没有地址或 GUEST_ADDRESS 表中没有链接,则上述查询不会返回访客的记录,因为加入。如果您希望它返回客人详细信息(无论地址如何),您只需将 JOIN 更改为 LEFT JOIN

关于sql - sql中的三种方式连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17266994/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com