我要和两张桌子一起展示汽车品牌。结构如下:
SELECT DISTINCT
b.title
FROM
brands as b
INNER JOIN items as i
ON i.brand_id = b.id
WHERE i.status = 1
ORDER BY COUNT(i.brand_id) DESC;
以上只产生一条记录。如果删除
"ORDER BY COUNT(i.brand_id) DESC;"
,它将正确显示所有记录。我想根据每个品牌类别下的车辆数量对结果进行排序。所以举例来说,如果宝马类车的数量最多,它应该是第一辆。
最佳答案
SELECT b.titleFROM brands as b INNER JOIN items as i ON i.brand_id = b.idWHERE i.status = 1GROUP BY b.titleORDER BY COUNT(i.brand_id) DESC;
这应该对你有用。
我会用SELECT b.title, count(i.brand_id)FROM items i LEFT JOIN brands as b ON b.id = i.brand_idWHERE i.status = 1GROUP BY i.brand_idORDER BY COUNT(i.brand_id) DESC;
你关心的是库存汽车的数量。你想按你拥有的每个品牌的数量来细分它们。所以,您主要关注items表,只需要brands表来获取items表(brand name)中存储的信息。最后,为了得到每个品牌的总数,您必须让MySQL知道您希望在GROUP BY
中得到什么。
我没有使用解释,但我认为底部查询更有效。
关于php - PHP,Mysql根据来自另一个表的记录数对结果进行排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32105163/