Получить верхние строки на основе самых высоких записей - PullRequest
0 голосов
/ 20 июня 2011

У меня есть таблицы с именами «Категория» и «Пользователи». Я вставляю запись в таблицу пользователей в некоторые категории. Теперь я хочу категории заказов, в которых зарегистрировано максимальное количество пользователей.

Пример таблицы;

Категория:

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

Теперь в приведенном выше примере CategoryId 2 содержит 3 пользователя, поэтому я хочу, чтобы Имя CategoryId 2 было сверху.

Thanx

Ответы [ 2 ]

2 голосов
/ 20 июня 2011
SELECT
  *
FROM
  Category
ORDER BY
  (SELECT COUNT(*) FROM Users WHERE CategoryId = Category.CategoryId) DESC


Или альтернативно, как некоторые предпочитают это, хотя я не ...

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 голосов
/ 20 июня 2011
select count(CategoryId) as rank, CategoryId 
from users group by Categoryid order by rank desc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...