2011-06-20 10 views
0

"カテゴリ"と "ユーザー"というテーブルがあります 私はいくつかのカテゴリのユーザーテーブルにレコードを挿入しています 今最大ユーザーが登録されているオーダーカテゴリが必要です。最高のレコードに基づいて一番上の行を取得

サンプルテーブル;

カテゴリー:

CategoryId Name 
1   Category1 
2   Category2 
3   Category3 

ユーザー:上記の例では今

UserId  Name  CategoryId 
1   User1   1 
2   User2   2 
3   User3   2 
4   User4   2 
5   User5   3 

区分2はので、私がトップに区分2名を欲しい3人のユーザー が含まれています。

ありがとう

答えて

2
SELECT 
    * 
FROM 
    Category 
ORDER BY 
    (SELECT COUNT(*) FROM Users WHERE CategoryId = Category.CategoryId) DESC 


または代わりに、いくつかのperferとしてこれ、私がいないのに...

SELECT 
    Category.CategoryId, 
    Category.Name 
FROM 
    Category 
LEFT JOIN 
    Users 
    ON Users.CategoryId = Category.CategoryId 
GROUP BY 
    Category.CategoryId, 
    Category.Name 
ORDER BY 
    COUNT(Users.CategoryID) DESC 
0
select count(CategoryId) as rank, CategoryId 
from users group by Categoryid order by rank desc 
+1

が無いユーザーでカテゴリをランク付けしません – MatBailie

+0

+1:良い点。 –

関連する問題