|
|
|
| Нужен запрос в базу с выбором объектов по цене от и до какой-то.
Выглядит так
$sql = "SELECT * FROM table WHERE `flag` = $flag AND `price` BETWEEN '$price1' AND '$price2' ";
|
В принципе выборку делает, но если первый прайс в форму не ввести или ввести 0, то выберает все вподряд, аналогично если не ввести второй прай.
Как лучше сделать: через условия подставлять 1 в первом прайсе и милионы во втором или как-то изменить запрос?Или может еще как? | |
|
|
|
|
|
|
|
для: starpom
(24.09.2010 в 10:32)
| | А какой тип данных в `price` ? | |
|
|
|
|
|
|
|
для: heed
(24.09.2010 в 12:16)
| | VARCHAR
Я так догадываюсь надо ба интеджер??? | |
|
|
|
|
|
|
|
для: starpom
(24.09.2010 в 14:01)
| | строки сравниваются по другому
mysql> SELECT '10.01' BETWEEN '' AND '2.05';
+-------------------------------+
| '10.01' BETWEEN '' AND '2.05' |
+-------------------------------+
| 1 |
+-------------------------------+
1 row in set (0.02 sec)
mysql> SELECT CAST('10.01' AS DECIMAL(20.2)) BETWEEN '' AND '2.05';
+------------------------------------------------------+
| CAST('10.01' AS DECIMAL(20.2)) BETWEEN '' AND '2.05' |
+------------------------------------------------------+
| 0 |
+------------------------------------------------------+
|
// CAST(... AS DECIMAL может ругаться в старых версиях
Думаю надо формировать один из трёх видов запроса по ситуации z >= x , z <= y , z between x and y
// (x <= z <= y )
а так первый должен работать и в between (если с другими типами) , со вторым как и говорите в between придётся вставлять максимальное число | |
|
|
|
|
|
|
|
для: heed
(24.09.2010 в 14:24)
| | Спасибо | |
|
|
|
|
|
|
|
для: starpom
(24.09.2010 в 14:01)
| | любой числовой, подходящий по диапазону и точности представления. | |
|
|
|