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. SERIOUS - 07 Января, 2012 - 16:01:06 - перейти к сообщению
У меня есть выборка из БД параметров для фильтра. Все данные которые начинаются с цифер он сортирует правильно То что уже состоит из символов, он не может отсортировать. Сортируется вот этой частью кода

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.  
2. LIME - 07 Января, 2012 - 16:12:50 - перейти к сообщению
неуверен но попробуйте
CODE (SQL):
скопировать код в буфер обмена
  1. ORDER BY p1.products_parameters2products_value+0

(Добавление)
если не найдете решения всегда можно загнать результат в массив и http://php.su/functions/?f=natsort
3. SERIOUS - 07 Января, 2012 - 16:26:40 - перейти к сообщению
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. )

 

Powered by ExBB FM 1.0 RC1