我的任务是显示在相同结果中已订购和未订购特定商品的客户。我的表加入了CustomerNumber:
Customers Table:
CustomerNumber CustomerName
------------- ------------
1007 H&G Groceries
2548 Jims Restaurant
2005 Tangs Asian Foods
Orders Table:
CustomerNumber ItemNumber ItemDescripton NumberOrdered
-------------- ---------- -------------- -------------
1007 2055 Cheese 3
2548 8784 Canned Beans 6
2005 1199 Dozen Large Eggs 10
如果我要求 ItemNumber = 2055
的购买历史记录这是我想要显示结果的方式。现在请记住,所有客户至少在一个项目的订单表中
CustomerName ItemNumber ItemDescription NumberOrdered
------------ ---------- --------------- -------------
H&G Groceries 2055 Cheese 3
Jims Restaurant 0
Tangs Asian Food 0
实际上NumberOrder可能只是空白而没有必要有0
这就是我的尝试。
Select c.CustomerName,
o.ItemNumber,
o.ItemDescription,
o.NumberOrdered
From Customers C
Left Join Orders o ON c.CustomerNumber = o.CustomerNumber
Where o.OrderNumber = 2055;
这只返回H& G Groceries的一条记录。
答案 0 :(得分:1)
Where o.OrderNumber = 2055
or o.OrderNumber is null
当您使用外连接时,您必须在WHERE
子句中考虑空值。
或者,您可以将条件置于JOIN
条件:
Select c.CustomerName,
o.ItemNumber,
o.ItemDescription,
o.NumberOrdered
From Customers C
Left Join Orders o
On c.CustomerNumber = o.CustomerNumber
And o.OrderNumber = 2055;
答案 1 :(得分:0)
你应该使用左外连接。即。
从CustomersTable中选择* 在CustomerTable.CustomerNumber = OrdersTable.CustomerNumber
上LEFT JOIN OrdersTable