Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > Выборка с сортировкой по количеству строк


Автор: maxipub 10.4.2014, 11:42
Добрый день!

Есть таблица с полем res_id, тип int, не уникальное. Как сделать выборку, чтоб результаты сортировались по количеству строк с одинаковым res_id, например:

Код
res_id        data
1            ...
2            ...
3            ...
1            ...
3            ...
1            ...



Результат выборки нужен такой:

Код
1            ...
1            ...
1            ...
3            ...
3            ...
2            ...


Заранее спасибо за помощь.

Автор: krypt3r 11.4.2014, 07:00
Попробуйте вот такой вариант
Код

SELECT t2.cnt, t1.res_id, t1.data
FROM zzz t1
LEFT JOIN (
    SELECT COUNT(*) AS cnt, res_id 
    FROM zzz 
    GROUP BY res_id 
    ORDER BY COUNT(*) DESC
) t2 ON t1.res_id = t2.res_id
ORDER BY t2.cnt DESC;

Вывод:
Код

+------+--------+------+
| cnt  | res_id | data |
+------+--------+------+
|    3 |      1 | str1 |
|    3 |      1 | str4 |
|    3 |      1 | str6 |
|    2 |      3 | str3 |
|    2 |      3 | str5 |
|    1 |      2 | str2 |
+------+--------+------+

Автор: maxipub 11.4.2014, 10:00
krypt3r, благодарю, клевое решение! smile

Насколько я понял, тут джойнится временная таблица? Интересный вариант, не сталкивался как-то с таким ранее. smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)