我有一个项目表,以及它们来自哪个供应商: tabel items
Ttem ID - Item Title - Supplier - Date added
一个供应商可以提供多个物料,名称和供应商不是唯一的。
我想展示最新添加的56个项目,并从这56个项目中展示排名前十的供应商
所以我个人有:
select *
from items
order by dateadded desc
limit 56
对于供应商来说
select count(supplier) as howmany
from items
group by supplier
order by howmany desc
limit 10
我的问题是如何显示所选56种产品的前十名供应商
谢谢你的帮助
发布于 2012-10-08 09:55:06
只需将您的两个语句组合在一起,并使用第一个语句作为子选择:
select count(*) as howmany from (
select * from items order by dateadded desc limit 56
) top_items group by supplier order by howmany desc limit 10
更新:你最初有count(supplier)
,它应该可以工作,但不像它可能的那样清楚(看起来你似乎在试图计算供应商的数量)。我更改为count(*)
是为了强调这样一个事实,即您正在计算每个供应商的行数(商品数量)。
发布于 2012-10-08 09:55:01
这将为您提供最新56个产品的前10名供应商:
SELECT COUNT(supplier) AS howmany
FROM items
WHERE item_id IN (
SELECT t2.item_id
FROM items t2
ORDER BY t2.dateadded DESC
LIMIT 56
)
GROUP BY supplier
ORDER BY howmany DESC
LIMIT 10;
https://stackoverflow.com/questions/12779220
复制