我有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。
答案 0 :(得分:5)
条件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
答案 1 :(得分:1)
由于你在where where子句中的以下陈述,它不起作用:
account.billing_fk = billing.id
尝试将其移至left join section