Sql 左连接没有结果
这是两张桌子 待定发票 tbl_付款 我想要的是特定客户的Sql 左连接没有结果,sql,sql-server,join,left-join,Sql,Sql Server,Join,Left Join,这是两张桌子 待定发票 tbl_付款 我想要的是特定客户的待处理发票。 现有查询如下: Select * from tbl_Invoice I left join tbl_payment P on I.client_id = P.client_id left join tbl_client C on I.client_id = C.client_id where I.invoice_Id not in (P.invoice_Id) and I.client
待处理发票。
现有查询如下:
Select * from tbl_Invoice I
left join tbl_payment P on I.client_id = P.client_id
left join tbl_client C on I.client_id = C.client_id
where I.invoice_Id not in (P.invoice_Id)
and I.client_id = 8
但由于付款表是空的,因此它会给出空结果。您需要将条件从
中的移动到上的:
Select * from tbl_Invoice I
left join tbl_payment P on (I.client_id = P.client_id
AND p.invoice_id <> I.invoice_Id)
left join tbl_client C on I.client_id = C.client_id
WHERE I.client_id = 5
从tbl\U发票I中选择*
左连接tbl_付款P on(I.client_id=P.client_id
和p.发票号(I.发票号)
左连接tbl_客户端C on I.client_id=C.client_id
其中I.client_id=5
Nice。。!!你能解释一下吗?。。I.invoice\u Id不在(P.invoice\u Id)
如果tbl\u付款为空,则返回NULL
NULL
在逻辑语句中被视为FALSE;所以你得到的结果集是空的。通常,当您使用左连接
时,您不希望将任何左连接
ed放入where
,因为它会将左连接
转换为内部
。异常-使用在left\u joined\u table.primary\u key\u column为NULL的情况下获取父表中没有详细信息的所有记录是可以的,也是常见的做法。。。