Мне нужна помощь в построении MySQL-запроса, который выведет все строки в определенном порядке. Определение таблицы содержит id
, sub_id
и name
. Столбец sub_id
используется для указания того, что данная строка должна быть сгруппирована в пределах id
, а если sub_id
пуст/0/null, то строка представляет собой строку верхнего уровня.Заказ по подгруппе
Желаемый порядок сортировки - name
, за исключением того, что я хочу, чтобы все sub_id
строк были сгруппированы в их соответствующие строки id
. В каждой подгруппе каждая строка должна сортироваться по имени.
Например, если это неупорядоченная таблица:
id sub_id name
=====================
1 0 bananas
2 0 apples
3 0 apricots
4 2 strawberries
5 2 cherries
6 1 oranges
желаемый порядок является:
id sub_id name
=====================
2 0 apples
5 2 cherries
4 2 strawberries
3 0 apricots
1 0 bananas
6 1 oranges
(расстояние между подгруппами только для иллюстративных целей)
помочь? Заранее спасибо!
спасибо за умный ответ. Однако я думаю, что сначала это будет сортироваться по id. Так, например, строка с id = 1, name = 'xyz' и другая строка с id = 2, name = 'abc' будут неправильно отсортированы. Кроме того, я хочу, чтобы строка с sub_id = NULL была отсортирована сначала внутри подгруппы. – yahermann
Я предлагаю вам создать sqlfiddle для этого http://sqlfiddle.com/ Я не уверен, думаю, что он не работает, или он действительно не работает ... – Bulat