|
|
|
| Доброго времени суток.
Имеется такой запрос, который выводит ближайшее число в меньшую сторону
<?
$number = 35;
echo mysql_result(mysql_query("SELECT num FROM table ORDER BY ABS(num - '$number') LIMIT 1"), 0);
|
Подскажите каким запросом найти ближайшее число в поле таблицы от заданного числа в большую сторону? | |
|
|
|
|
|
|
|
для: Peeter
(16.09.2010 в 01:40)
| |
<?
$number = 35;
$var = mysql_result(mysql_query("SELECT num FROM table ORDER BY ABS(num - '$number') LIMIT 1"), 0);
$sql = "SELECT num FROM table WHERE num < $var LIMIT 1";
?>
|
| |
|
|
|
|
|
|
|
для: ols
(16.09.2010 в 02:28)
| | >$sql = "SELECT num FROM table WHERE num < $var LIMIT 1";
>
и много толка с LIMIT при отсутствующем порядке? | |
|
|
|
|
|
|
|
для: Trianon
(16.09.2010 в 08:05)
| | Ну да, следует указывать явно
$sql = "SELECT num FROM table WHERE num < $var ORDER BY num LIMIT 1"; | |
|
|
|
|
|
|
|
для: ols
(16.09.2010 в 10:18)
| | >Ну да, следует указывать явно
>$sql = "SELECT num FROM table WHERE num < $var ORDER BY num LIMIT 1";
Чушь.
элементы таблицы : 1 2 3 4 5
$num = 3
считайте сами, что выйдет. | |
|
|
|
|
|
|
|
для: Trianon
(16.09.2010 в 10:56)
| | $sql = "SELECT num FROM table WHERE num < $var ORDER BY num DESC LIMIT 1"; | |
|
|
|
|
|
|
|
для: ols
(16.09.2010 в 11:10)
| | А теперь скажите, зачем требовать от сервера брать всю таблицу, когда достаточно попросить одну строку?
SELECT MAX(num) FROM table WHERE num < $var
|
| |
|
|
|
|
|
|
|
для: Trianon
(16.09.2010 в 13:23)
| | Да действетильно, не зачем.
Хотя сомневаюсь, что в обоих случаях сервер, при наличии индексов, будет брать всю таблицу | |
|
|
|
|
|
|
|
для: ols
(16.09.2010 в 11:10)
| |
<?
$number = 35;
echo mysql_result(mysql_query("SELECT MAX(num) FROM table WHERE num < '$number' ORDER BY num DESC LIMIT 1"), 0);
?>
|
Например имеем в таблице такие записи:
id | num
1 | 34
2 | 38
3 | 52
|
Ваш запрос выведет число 34, а должно вывести 38.
А если $number меньше 34, то и вовсе выдаст ошибку. | |
|
|
|
|
|
|
|
для: Peeter
(23.09.2010 в 04:38)
| | кто Вам дописал LIMIT 1 ? | |
|
|
|
|
|
|
|
для: Peeter
(23.09.2010 в 04:38)
| | Да LIMIT там вовсе уже не нужен. Поскольку задействована агрегтная функция. И переменную $number в апострофы не нужно заключать, это число. | |
|
|
|
|
|
|
|
для: Peeter
(23.09.2010 в 04:38)
| | Зачем вам в запросе ORDER BY num?
Вы одну ячейку выбираете. | |
|
|
|
|
|
|
|
для: Лена
(23.09.2010 в 11:53)
| | кстати, да. | |
|
|
|
|
|
|
|
для: Peeter
(23.09.2010 в 04:38)
| |
<? echo mysql_result(mysql_query("SELECT MAX(num) FROM ttt WHERE num < $number"), 0);
|
Такой вариант тоже не работает. | |
|
|
|
|
|
|
|
для: Peeter
(23.09.2010 в 13:21)
| | небось ближайшее меньшее выдает? | |
|
|
|
|
|
|
|
для: Trianon
(23.09.2010 в 15:08)
| | так точно =) | |
|
|
|
|
|
|
|
для: Peeter
(24.09.2010 в 00:44)
| | и что, меньше на больше и наоборот в запросе поменять религия не позволяет? | |
|
|
|
|
|
|
|
для: Trianon
(24.09.2010 в 08:57)
| | Менял, не работает.
Вы наверное не поняли моего вопроса.
Мне нужно ближайшее большее число, а не самое большое из всех, которые больше заданного числа. | |
|
|
|
|
|
|
|
для: Peeter
(24.09.2010 в 22:18)
| | ну так max на min тоже поменять надо | |
|
|
|
|
|
|
|
для: ride
(24.09.2010 в 22:27)
| | Не додумался, спасибо! | |
|
|
|
|
|
|
|
для: Peeter
(24.09.2010 в 22:18)
| | где уж мне.
"и наоборот" что означает? | |
|
|
|
|
|
|
|
для: Peeter
(16.09.2010 в 01:40)
| | >Имеется такой запрос, который выводит ближайшее число в меньшую сторону
Этот запрос выводит нечто другое. | |
|
|
|