SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 30.08.2013 01:04:59

MHz
Участник
Откуда: г. Лисичанск
Зарегистрирован: 15.10.2010
Сообщений: 4

Сортировка по двум полям

Доброго времени суток!
Подскажите пожалуйста по сортировке по двум полям, второй день мучаюсь.

Таблица:
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)

Неактивен

 

#2 30.08.2013 01:13:07

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Сортировка по двум полям

На каждый параметр сортировки может быть указано 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?


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#3 30.08.2013 01:35:30

MHz
Участник
Откуда: г. Лисичанск
Зарегистрирован: 15.10.2010
Сообщений: 4

Re: Сортировка по двум полям

Спасибо большое!
Блин на ровном месте я проблему создал!

Забыл псевдонимы по удалять "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

Неактивен

 

#4 30.08.2013 02:29:35

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Сортировка по двум полям

Это от того, что house у вас строка, а не число. Так задумано?

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson