题解 | #列出供应商及其可供产品的数量#
列出供应商及其可供产品的数量
https://www.nowcoder.com/practice/17f22851cf204019b51a36761a3afc79
此题我并没有使用题目提示的outer join,而是换了另一种思路,使用了ifnull函数,感觉比较容易理解,列出代码以供参考:
select a.vend_id,ifnull(prod_id,0) from Vendors a left join // 第三步:查询Vendors表中的供应商名称及相应的种类数,由于使用的左连接,Vendors表里某些供应商在连接后可能没有数据,使用ifnull函数进行处理。 (select vend_id,count(prod_id) prod_id from Products group by vend_id) b // 第一步:将Products表按供应商进行分组,求得各个供应商的供应产品种类数 on a.vend_id = b.vend_id // 第二步:使用Vendors表与第一步查询好的表进行左连接,得到Vendors表中各供应商拥有的产品类别 order by vend_id asc // 最后按供应商id升序排列关于ifnull函数的使用:IFNULL(var1,var2),如果参数var1非空,则直接输出var1的值;如果var1为空,则输出自己设定的var2值。