Forum Webscript.Ru

Общие => Базы данных => Тема начата: JV от 16 Января 2004, 15:03:33

Название: Помогите с MySQL, pls!
Отправлено: JV от 16 Января 2004, 15:03:33
можно ли как-нить в запросе упорядочить результат по частному от деления 2х столбцов?
т.е. например в таблице есть 2 столбца q и w, и мне надо дословно:
SELECT * FROM table ORDER BY q/w; ??
как это можно обойти?
Название: Помогите с MySQL, pls!
Отправлено: tserbis от 16 Января 2004, 15:29:05
Упорядочить (отсортировать) при выборке - только с помощью ORDER BY.
Надо "по частному от деления" - либо заведи такой столбец и поддерживай его в нужном состоянии (гон), либо делай как написал.
Что и зачем обойти?
Название: Помогите с MySQL, pls!
Отправлено: JV от 16 Января 2004, 15:33:17
такой запрос не работает ))
заводить столбец - это лишнее. Неужели в MySQL нет способа, чтобы отсортировать по результату некоторых действий (в данн. случ - деления), а можно только с использованием внешних массивов?
Название: Помогите с MySQL, pls!
Отправлено: tserbis от 16 Января 2004, 15:55:27
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)
Название: Помогите с MySQL, pls!
Отправлено: JV от 16 Января 2004, 16:39:09
Да, че-то я глюк поймала ))
и замудрила таким образом:
SELECT *, i1/i2 AS ttt FROM pics ORDER BY ttt;

спасибо за помощь ))
Название: Помогите с MySQL, pls!
Отправлено: tserbis от 16 Января 2004, 16:53:59
Так тоже работает.

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)