5

我有一个查找表,显示带有 CityId、CityName 字段的城市

CityId   CityName
1        New York 
2        San Francisco
3        Chicago

我有一个包含以下字段的订单表:CityId、CustId、CompletedOrders、PendingOrders

CityId CustId CompletedOrders PendingOrders
1       123   100             50
2       123   75              20

我想要一个列出所有城市给定客户的订单详细信息的表格/报告,即我需要的结果是:

CityId CityName      CustId CompletedOrders PendingOrders
1      New York      123    100             50
2      San Francisco 123    75              20
3      Chicago       123    0               0

怎么做 ?

4

2 回答 2

11
SELECT
  c.CityId
  c.CityName
  o.CustId,
  o.CompletedOrders
  o.PendingOrders
FROM cities c
LEFT JOIN orders o ON ( c.CityId = o.CityId )

这将返回您想要的所有行,但对于其中不存在的details行将返回NULL值,因此您将获得:

CityId CityName      CustId CompletedOrders PendingOrders
1      New York      123    100             50
2      San Francisco 123    75              20
3      Chicago       123    NULL            NULL

获得的解决方案0取决于您的数据库。配合MySQL 使用IFNULL,配合 Oracle 使用NVL

于 2010-01-06T18:27:24.727 回答
1

尝试这个

select c.CityId,c.CityName,o.CustId,o.CompletedOrders,o.PendingOrders

from orders Left join cities 

on o.CityId = c.CityId
于 2010-01-06T18:30:05.697 回答