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. daglas1 - 01 Августа, 2012 - 15:22:02 - перейти к сообщению
Всем привет.
Есть у меня таблица с данными где два рейтинга в виде столбцов.
Первый рейтинг принимает 3 значения 10 8 и 5
А второй может принимать любые положительные значения. Два столбца эти в таблице в виде интежерных полей а8 и а9.
Делаю сортировку по двум полям
SELECT *
FROM compoz
ORDER BY a8 DESC , a9 DESC
Чтобы на верху был топ а вниз инфа двигалась по убыванию цыфр.
Но получается что у меня идет порядок 8 5 10
а не 10 8 5.
Как правильно сформировать запрос?
2. OrmaJever - 01 Августа, 2012 - 15:25:30 - перейти к сообщению
daglas1 пишет:
Как правильно сформировать запрос?

не запрос а таблицу, у вас тип этого поля "текстовое" поэтому сортирует по символьно как строку, а не число.
3. KingStar - 01 Августа, 2012 - 15:28:08 - перейти к сообщению
таблицу с полями бы не мешало показать
4. daglas1 - 01 Августа, 2012 - 15:38:32 - перейти к сообщению
Таблицу приатачу.
Там поля интедерные. Я пробовал ставить галочку нулл и не нулл а результат одинаков.
5. KingStar - 01 Августа, 2012 - 15:41:06 - перейти к сообщению
6. daglas1 - 01 Августа, 2012 - 16:31:42 - перейти к сообщению
KingStar пишет:

в том и штука что сначало нужно а8 а потом а9.
7. KingStar - 01 Августа, 2012 - 16:41:00 - перейти к сообщению
ORDER BY a, b DESC;
+------+------+
| a | b |
+------+------+
| 1 | 3 |
| 1 | 2 |
| 1 | 1 |
| 2 | 3 |
| 2 | 2 |
| 2 | 1 |
| 3 | 3 |
| 3 | 2 |
| 3 | 1 |
+------+------+

ORDER BY a ASC, b DESC;
+------+------+
| a | b |
+------+------+
| 1 | 3 |
| 1 | 2 |
| 1 | 1 |
| 2 | 3 |
| 2 | 2 |
| 2 | 1 |
| 3 | 3 |
| 3 | 2 |
| 3 | 1 |
+------+------+

ORDER BY a DESC, b DESC;
+------+------+
| a | b |
+------+------+
| 3 | 3 |
| 3 | 2 |
| 3 | 1 |
| 2 | 3 |
| 2 | 2 |
| 2 | 1 |
| 1 | 3 |
| 1 | 2 |
| 1 | 1 |
+------+------+
8. daglas1 - 01 Августа, 2012 - 17:14:25 - перейти к сообщению
Спасибо, за наглядную илюстрацию. Вот как раз полсдений вариант мне и нужен.
Но получается что у меня числа сортируются как строки. Ибо идет 8 5 10.
хотя в полях таблицы интежер стоит.

 

Powered by ExBB FM 1.0 RC1