如何订购产品最多的类别

时间:2013-05-21 10:53:17

标签: php mysql sql

我在一个mysql中不太清楚。 我有两张桌子:

tblcategory
id,name

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;

结果是某些没有产品的类别没有出现在我的结果中!我怎么能得到所有这些?

1 个答案:

答案 0 :(得分:6)

您需要使用left outer join

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;

inner join仅保留两个表中匹配的记录。即使没有匹配项,您也需要所有产品类别。 left outer join保留第一个表(tblcategory)中的所有记录以及第二个表(tblproduct)中的任何匹配记录。如果某个类别中没有产品,那么您将获得值0而不是缺失的行。