我有一个查找表,表示城市字段为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
怎么做?
答案 0 :(得分:9)
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
。
答案 1 :(得分:1)
试试这个
select c.CityId,c.CityName,o.CustId,o.CompletedOrders,o.PendingOrders
from orders Left join cities
on o.CityId = c.CityId