1

私はアイテムの表とそれらがどのサプライヤーから来たのかを持っています:tabelitems

Ttem ID - Item Title - Supplier - Date added

サプライヤは複数のアイテムを提供できますが、タイトルもサプライヤも一意ではありません。

最近追加された56項目を表示したいのですが、そのうち上位10社を表示したいのですが

だから個人的に私は持っています:

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アイテムの上位10社のサプライヤーをどのように表示するかです。

助けてくれてありがとう

4

2 に答える 2

1

2つのステートメントを組み合わせて、最初のステートメントを副選択として使用します。

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-08T09:55:05.843 に答える
0

これにより、最新の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;
于 2012-10-08T09:55:00.790 に答える