Задавайте вопросы, мы ответим
Вы не зашли.
Доброго времени суток!
Подскажите пожалуйста по сортировке по двум полям, второй день мучаюсь.
Таблица:
address | house | apartment
1 | 7 | 34
1 | 7 | 12
1 | 2 | 6
2 | 65 |
2 | 51 |
2 | 57 |
Сортирую:
SELECT * FROM tbl WHERE address = '1' ORDER BY (0+ud.house), (0+ud.apartment) ASC
address | house | apartment
1 | 2 | 6
1 | 7 | 12
1 | 7 | 34
SELECT * FROM tbl WHERE address = '1' ORDER BY (0+ud.house), (0+ud.apartment) DESС
address | house | apartment
1 | 7 | 34
1 | 7 | 12
1 | 2 | 6
Первые два запроса выполняются отлично, но вот когда значения в колонке apartment отсутствуют, то сортирует только так:
SELECT * FROM tbl WHERE address = '2' ORDER BY (0+ud.house), (0+ud.apartment) ASC
address | house | apartment
2 | 51 |
2 | 57 |
2 | 65 |
SELECT * FROM tbl WHERE address = '2' ORDER BY (0+ud.house), (0+ud.apartment) DESС
address | house | apartment
2 | 51 |
2 | 57 |
2 | 65 |
Отредактированно MHz (30.08.2013 01:12:46)
Неактивен
На каждый параметр сортировки может быть указано asc/desc.
Попробуйте так:
SELECT * FROM tbl WHERE address = '2' ORDER BY (0+ud.house) DESC, (0+ud.apartment) DESC;
А зачем, между прочим, Вы пишете (0+ud.house) ? Почему не просто ORDER BY ud.house?
Неактивен
Спасибо большое!
Блин на ровном месте я проблему создал!
Забыл псевдонимы по удалять "ud.*"
Так соблюдаю нумерация:
ORDER BY (0+house)
1
2
3
4
5
6
7
8
9
10
11
..
20
21
ORDER BY house
1
10
11
...
2
20
21
3
4
5
6
7
8
9
Неактивен
Это от того, что house у вас строка, а не число. Так задумано?
Неактивен