繁体   English   中英

左联接不起作用-它忽略左表的记录

[英]left join doesn't work - its ignoring the records of the left table

我有3张桌子

表客户

ID NUMBER NAME
--------------------------------------
1  12345  Apple
2  23456  Orange
3  25896  Banana

表帐户

 ID    CUST_NUMBR  TYPE    BILLING_FK
 -------------------------------------
 1     12345        B      9876
 2     23456        R      8765
 3     25896        R      7654

表计费

 ID    Start_Date  End_Date 
 -------------------------------------
 1     BLAH       BLAH       
 2     BLAH       BLAH             
 3     BLAH       BLAH       

关系

  CUSTOMER.NUMBER = ACCOUNT.CUST_NUMBR
  ACCOUNT.BILLING_FK  = BILLING.ID

有时,找不到客户的帐户,在这种情况下,开始日期必须为空。

如果我尝试左加入,如果没有帐户,则看不到客户。

 select name,number,start_date
 from customer left join account on customer.number = account.cust_number,
 billing
 where account.billing_fk = billing.id

如果没有该客户的帐户,如何将开始日期设为空。

您的条件为account.billing_fk = billing.id将您的LEFT JOIN变成INNER JOIN 几乎消除了所有NULL条目。

select name,number,start_date
from customer 
left join account on customer.number = account.cust_number
left join billing on account.billing_fk = billing.id

由于您的where子句中有以下语句,因此无法使用:

account.billing_fk = billing.id

尝试将其移到left join section

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM