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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Сортировка данных\

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
Moulder
Отправлено: 22 Октября, 2012 - 14:39:41
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Окт. 2012  


Помог: 0 раз(а)




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

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

Спасибо
 
 Top
Zuldek
Отправлено: 22 Октября, 2012 - 14:41:58
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




SELECT * FROM buildings ORDER BY number ASC;
 
 Top
Moulder
Отправлено: 22 Октября, 2012 - 14:56:15
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Окт. 2012  


Помог: 0 раз(а)




[quote=Zuldek][/quote]

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

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

надо
1
2
3
5
11
24

получается
1
11
2
24
3
5
 
 Top
ingram
Отправлено: 22 Октября, 2012 - 15:19:40
Post Id



Гость


Покинул форум
Сообщений всего: 65
Дата рег-ции: Июнь 2010  


Помог: 3 раз(а)




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;

(Отредактировано автором: 22 Октября, 2012 - 18:45:38)

 
 Top
Zuldek
Отправлено: 22 Октября, 2012 - 16:11:44
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




Вы их в строках что-ли держите Хм
 
 Top
Мелкий Супермодератор
Отправлено: 22 Октября, 2012 - 16:48:11
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Zuldek пишет:
Вы их в строках что-ли держите

Не знаю, как у вас, а у нас действительно есть номера домов вроде 31б.


-----
PostgreSQL DBA
 
 Top
Moulder
Отправлено: 22 Октября, 2012 - 18:40:05
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Окт. 2012  


Помог: 0 раз(а)




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
 
 Top
ingram
Отправлено: 22 Октября, 2012 - 18:44:57
Post Id



Гость


Покинул форум
Сообщений всего: 65
Дата рег-ции: Июнь 2010  


Помог: 3 раз(а)




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;
 
 Top
Moulder
Отправлено: 22 Октября, 2012 - 19:16:08
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Окт. 2012  


Помог: 0 раз(а)




ingram пишет:


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


Теперь оно) спасибо)
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB