2013-11-20 21 views
0

我的问题给出这种方式返回客户及其订单,包括没有下订单的客户。如何加入,包括用NULL数据排

我写这样的代码

SELECT A.custid, A.companyname, 
     B.orderid, B.orderdate 

FROM Sales.Customers as A 
    JOIN sales.orders as B 
    ON A.custid=B.custid; 

它的工作原理差不多吧,只是一个点,这行的也返回这样行,其中orderidorderdate等于NULL

custid  companyname   orderid orderdate 
------  -------------  ------ --------- 
57   Customer WVAXS  NULL  NULL 

此外,我不能理解为什么我的代码不能正常工作。

回答

4

使用左连接此:

SELECT A.custid, A.companyname, 
     B.orderid, B.orderdate 

FROM Sales.Customers as A 
    LEFT JOIN sales.orders as B 
    ON A.custid=B.custid; 

左连接包括从客户表在发生匹配订单表中的所有行,只有那些 - 这样你可以有空为B的列。

+0

是的,它的工作原理,忘记**外连接** – Rocketq