【发布时间】:2016-01-31 02:37:22
【问题描述】:
我有三个表,如下所示。我需要在客户和订单表上进行左连接,这很好。做左连接后,我需要每个客户的“城市”,“城市”值在 ADDRESS 表中。
客户
cus_id
订单
order_id
cus_id
地址
cus_id
city
下面的查询返回了 13 条记录,没有与 ADDRESS 表进行内连接
SELECT a.cus_id,
b.order_id
FROM customer a
LEFT JOIN orders b
ON a.cus_id = b.cus_id
此查询返回 10 个结果,并在 ADDRESS 上进行内连接
SELECT a.cus_id,
b.order_id,
c.city
FROM customer a
LEFT JOIN orders b
ON a.cus_id = b.cus_id
INNER JOIN address c
ON c.cus_id = a_cus_id
这 3 条记录在哪里消失了?
【问题讨论】:
-
会有没有地址的客户吗?如果你只是内部加入
customer和address会发生什么?你得到了多少行? -
假设一个客户总是有一个地址,第二个内连接查询应该返回 13 条记录?
标签: database oracle join left-join inner-join