Forum Webscript.Ru
Общие => Базы данных => Тема начата: JV от 16 Января 2004, 15:03:33
-
можно ли как-нить в запросе упорядочить результат по частному от деления 2х столбцов?
т.е. например в таблице есть 2 столбца q и w, и мне надо дословно:
SELECT * FROM table ORDER BY q/w; ??
как это можно обойти?
-
Упорядочить (отсортировать) при выборке - только с помощью ORDER BY.
Надо "по частному от деления" - либо заведи такой столбец и поддерживай его в нужном состоянии (гон), либо делай как написал.
Что и зачем обойти?
-
такой запрос не работает ))
заводить столбец - это лишнее. Неужели в MySQL нет способа, чтобы отсортировать по результату некоторых действий (в данн. случ - деления), а можно только с использованием внешних массивов?
-
mysql> create table t (i1 int, i2 int);
Query OK, 0 rows affected (0.01 sec)
mysql> insert t set i1 = 1, i2 = 5;
Query OK, 1 row affected (0.00 sec)
mysql> insert t set i1 = 2, i2 = 5;
Query OK, 1 row affected (0.00 sec)
mysql> select * from t order by i2/i1;
+------+------+
| i1 | i2 |
+------+------+
| 2 | 5 |
| 1 | 5 |
+------+------+
2 rows in set (0.00 sec)
mysql> select * from t order by i2/i1 desc;
+------+------+
| i1 | i2 |
+------+------+
| 1 | 5 |
| 2 | 5 |
+------+------+
2 rows in set (0.00 sec)
-
Да, че-то я глюк поймала ))
и замудрила таким образом:
SELECT *, i1/i2 AS ttt FROM pics ORDER BY ttt;
спасибо за помощь ))
-
Так тоже работает.
mysql> SELECT *, i1/i2 AS ttt FROM t ORDER BY ttt;
+------+------+------+
| i1 | i2 | ttt |
+------+------+------+
| 1 | 5 | 0.20 |
| 2 | 5 | 0.40 |
+------+------+------+
2 rows in set (0.00 sec)
mysql> SELECT *, i1/i2 AS ttt FROM t ORDER BY ttt desc;
+------+------+------+
| i1 | i2 | ttt |
+------+------+------+
| 2 | 5 | 0.40 |
| 1 | 5 | 0.20 |
+------+------+------+
2 rows in set (0.00 sec)