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]   

> Без описания
SERIOUS
Отправлено: 07 Января, 2012 - 16:01:06
Post Id


Гость


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


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




У меня есть выборка из БД параметров для фильтра. Все данные которые начинаются с цифер он сортирует правильно То что уже состоит из символов, он не может отсортировать. Сортируется вот этой частью кода

CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. ORDER BY cast(p1.products_parameters2products_value AS UNSIGNED)
  3.  


Если сортировать просто без cast, то он отсортирует с логики компьютера правильно, но с человеческой логики неправильно. Подскажите как мне изменит запрос в БД?

Т.е. получается вот так для обычных данных
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <ul style="display: none; ">
  3. <li><a href="#" index="0" class="selected">Все</a></li>
  4. <li><a href="#" index="1">Накаливания</a></li>
  5. <li><a href="#" index="2">Диоды</a></li>
  6. <li><a href="#" index="3">Флюорисцентная</a></li>
  7. <li><a href="#" index="4">Галогеновые</a></li>
  8. <li><a href="#" index="5">LED</a></li>
  9. </ul>
  10.  

а для тех что начиняются с цифр всё нормально.
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <ul style="display: block; ">
  3. <li><a href="#" index="0" class="selected">Все</a></li>
  4. <li><a href="#" index="1">до 10 м2</a></li>
  5. <li><a href="#" index="2">10-15 м2</a></li>
  6. <li><a href="#" index="3">16-25 м2</a></li>
  7. <li><a href="#" index="4">25-39 м2</a></li>
  8. <li><a href="#" index="5">40 м2 и более</a></li>
  9. </ul>
  10.  
 
 Top
LIME
Отправлено: 07 Января, 2012 - 16:12:50
Post Id


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


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


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




неуверен но попробуйте
CODE (SQL):
скопировать код в буфер обмена
  1. ORDER BY p1.products_parameters2products_value+0

(Добавление)
если не найдете решения всегда можно загнать результат в массив и http://php.su/functions/?f=natsort
 
 Top
SERIOUS
Отправлено: 07 Января, 2012 - 16:26:40
Post Id


Гость


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


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




LIME
запрос изменился, но результат остался точно таким же.

Касаемо natsort. Он сортирует может и правильно. Но у меня сразу массив такого плана.

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. (
  3.     [0] => Array
  4.         (
  5.             [products_parameters_id] => 97
  6.             [products_id] => 1111
  7.             [products_parameters_values_id] => 5879
  8.             [products_parameters2products_value] => до 10 м2
  9.             [products_parameters2products_md5] => 1791f467ed6ba133f8318eb281d2e649
  10.             [products_parameters2products_order] => 0
  11.             [parameters_value] => до 10 м2
  12.             [count] => 1118
  13.         )
  14.  
  15.     [1] => Array
  16.         (
  17.             [products_parameters_id] => 97
  18.             [products_id] => 1113
  19.             [products_parameters_values_id] => 5895
  20.             [products_parameters2products_value] => 10-15 м2
  21.             [products_parameters2products_md5] => a55a18828d84b79f751f6c7147476843
  22.             [products_parameters2products_order] => 0
  23.             [parameters_value] => 10-15 м2
  24.             [count] => 404
  25.         )
  26.  
  27.     [2] => Array
  28.         (
  29.             [products_parameters_id] => 97
  30.             [products_id] => 1121
  31.             [products_parameters_values_id] => 5912
  32.             [products_parameters2products_value] => 16-25 м2
  33.             [products_parameters2products_md5] => b8d9a63e1685dfc59927d61620e323a5
  34.             [products_parameters2products_order] => 0
  35.             [parameters_value] => 16-25 м2
  36.             [count] => 356
  37.         )
  38.  
  39.     [3] => Array
  40.         (
  41.             [products_parameters_id] => 97
  42.             [products_id] => 1160
  43.             [products_parameters_values_id] => 6660
  44.             [products_parameters2products_value] => 25-39 м2
  45.             [products_parameters2products_md5] => 8080c9d5d4c13f09b1aee15cfcc7e474
  46.             [products_parameters2products_order] => 0
  47.             [parameters_value] => 25-39 м2
  48.             [count] => 92
  49.         )
  50.  
  51.     [4] => Array
  52.         (
  53.             [products_parameters_id] => 97
  54.             [products_id] => 1156
  55.             [products_parameters_values_id] => 6792
  56.             [products_parameters2products_value] => 40 м2 и более
  57.             [products_parameters2products_md5] => e43eda35c31859616fce6d1134700589
  58.             [products_parameters2products_order] => 0
  59.             [parameters_value] => 40 м2 и более
  60.             [count] => 27
  61.         )
  62.  
  63. )

(Отредактировано автором: 07 Января, 2012 - 16:44:46)

 
 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