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

时间:2018-05-04 20:38:34

标签: sql oracle

我有3张桌子

表CUSTOMER

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

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

2 个答案:

答案 0 :(得分:5)

条件account.billing_fk = billing.idLEFT 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

答案 1 :(得分:1)

由于你在where where子句中的以下陈述,它不起作用:

account.billing_fk = billing.id

尝试将其移至left join section