Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Сортировка данных\
Форумы портала PHP.SU » » Вопросы новичков » Сортировка данных\

Страниц (1): [1]
 

1. Moulder - 22 Октября, 2012 - 14:39:41 - перейти к сообщению
Добрый день!
Ситуация такова. В MySQL в одном столбце хранятся номера домов. Когда делаю выборку с этой таблицы и указываю сортировку по номеру дома - сортируются они как 1, 11, 24, 3, 5.

Подскажите пожалуйста как сделать сортировку для вывода списка в виде 1, 3, 5, 11, 24?

Спасибо
2. Zuldek - 22 Октября, 2012 - 14:41:58 - перейти к сообщению
SELECT * FROM buildings ORDER BY number ASC;
3. Moulder - 22 Октября, 2012 - 14:56:15 - перейти к сообщению
[quote=Zuldek][/quote]

Так и делал. но мне надо чтобы цифры были номера домов были по порядку, а не цифры.

Т.е. дом 11 должен быть после дома 2, а не после 1

надо
1
2
3
5
11
24

получается
1
11
2
24
3
5
4. ingram - 22 Октября, 2012 - 15:19:40 - перейти к сообщению
Moulder пишет:
Zuldek пишет:


Так и делал. но мне надо чтобы цифры были номера домов были по порядку, а не цифры.

Т.е. дом 11 должен быть после дома 2, а не после 1

надо
1
2
3
5
11
24

получается
1
11
2
24
3
5


Столбец с номерами домов у тебя скорее всего имеет строковый тип. Отсюда и проблема.

попробуй так:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM buildings ORDER BY cast(number AS UNSIGNED) ASC;
5. Zuldek - 22 Октября, 2012 - 16:11:44 - перейти к сообщению
Вы их в строках что-ли держите Хм
6. Мелкий - 22 Октября, 2012 - 16:48:11 - перейти к сообщению
Zuldek пишет:
Вы их в строках что-ли держите

Не знаю, как у вас, а у нас действительно есть номера домов вроде 31б.
7. Moulder - 22 Октября, 2012 - 18:40:05 - перейти к сообщению
ingram пишет:

Столбец с номерами домов у тебя скорее всего имеет строковый тип. Отсюда и проблема.

попробуй так:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM buildings ORDER BY (number AS UNSIGNED) ASC;


Да, точно. строковой тип. Хотел бы конечно преобразовать его в числа, но не смогу записать дом 18б или 19/21.

SELECT * FROM buildings ORDER BY (number AS UNSIGNED) ASC;

выдает ошибку:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS UNSIGNED) ASC LIMIT 0, 30' at line 1
8. ingram - 22 Октября, 2012 - 18:44:57 - перейти к сообщению
Moulder пишет:
ingram пишет:

Столбец с номерами домов у тебя скорее всего имеет строковый тип. Отсюда и проблема.

попробуй так:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM buildings ORDER BY (number AS UNSIGNED) ASC;


Да, точно. строковой тип. Хотел бы конечно преобразовать его в числа, но не смогу записать дом 18б или 19/21.

SELECT * FROM buildings ORDER BY (number AS UNSIGNED) ASC;

выдает ошибку:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS UNSIGNED) ASC LIMIT 0, 30' at line 1


Извени, напутал немного. Вот так:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM buildings ORDER BY cast(number AS UNSIGNED) ASC;
9. Moulder - 22 Октября, 2012 - 19:16:08 - перейти к сообщению
ingram пишет:


Извени, напутал немного. Вот так:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM buildings ORDER BY cast(number AS UNSIGNED) ASC;


Теперь оно) спасибо)

 

Powered by ExBB FM 1.0 RC1