连接SQL查找表与数据表

7

我有一张查找表,例如城市,其中包含城市ID和城市名称两个字段。

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

如何做到这一点?

1
什么数据库,什么版本? - marc_s
为了正确显示代码或表格,请突出显示这些行并使用编辑器工具栏上的“代码”按钮(101 010)!否则,您的帖子将非常不清晰和混乱。 - marc_s
2个回答

12
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

试试这个

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

from orders Left join cities 

on o.CityId = c.CityId

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接