Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 左连接没有结果_Sql_Sql Server_Join_Left Join - Fatal编程技术网

Sql 左连接没有结果

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

这是两张桌子

待定发票

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_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的情况下获取父表中没有详细信息的所有记录是可以的,也是常见的做法。。。