tblcategory
id,名字
tblproduct
id,Name,Qty,Price,Category_id
当我使用sql选择按产品数量排序的所有catogories时:
SELECT c.id,c.name,count(p.id) as product_count
FROM tblcategory as c inner join tblproduct as p on c.id=p.category_id
GROUP BY c.id,c.name
ORDER BY product_count;
结果是某些没有产品的类别没有出现在我的结果中!我怎么能得到所有这些?
解决方法:
您需要使用左外连接:
SELECT c.id,c.name,count(p.id) as product_count
FROM tblcategory as c left outer join tblproduct as p on c.id=p.category_id
GROUP BY c.id,c.name
ORDER BY product_count;
内部联接仅保留两个表中匹配的记录.即使没有匹配项,您也需要所有产品类别.左外连接保留第一个表(tblcategory)中的所有记录以及第二个表(tblproduct)中的任何匹配记录.如果某个类别中没有产品,那么您将获得值0而不是缺失的行.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。