目录
一、数据
有Vendors表含有vend_id供应商id
vend_id |
a0002 |
a0013 |
a0003 |
a0010 |
有Products表含有供应商id和供应产品id
vend_id | prod_id |
a0001 | egg |
a0002 | prod_id_iphone |
a00113 | prod_id_tea |
a0003 | prod_id_vivo phone |
a0010 | prod_id_huawei phone |
二、问题
- 列出供应商(Vendors 表中的 vend_id)及其可供产品的数量,包括没有产品的供应商。
- 你需要使用 OUTER JOIN 和 COUNT()聚合函数来计算 Products 表中每种产品的数量。
- 最后根据vend_id 升序排序。
注意:vend_id 列会显示在多个表中,因此在每次引用它时都需要完全限定它。
三、示例结果
返回供应商id和对应供应商供应的产品的个数
vend_id | prod_id |
a0002 | 1 |
a0013 | 0 |
a0003 | 1 |
a0010 | 1 |
示例解析:
供应商a00013供应的商品不在Products表中所以为0,其他供应商供应的产品为1个。
四、解答
(一)错误答案
错误一
select a.vend_id, count(a.prod_id)
from Products a
right join Vendors b
on a.vend_id=b.vend_id
group by a.vend_id
order by a.vend_id
(1)错误原因:使用表字段错误
(2)简图示意:
错误二
select a.vend_id, count(a.prod_id)
from Products a
left join Vendors b
on a.vend_id=b.vend_id
group by a.vend_id
order by a.vend_id
(二)正确答案
select b.vend_id, count(a.prod_id)
from Products a
right join Vendors b
on a.vend_id=b.vend_id
group by b.vend_id
order by b.vend_id