Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Можно ли одним запросом получить ближайшее значение определенного поля (в большую или меньшую сторону - по выбору) от заданного?
 
 автор: Zilog   (17.02.2009 в 02:04)   письмо автору
 
 

У меня есть некий список, который я сортирую по полю sort. Оно содержит числа (float), и позволяет не только делать сортировку, но и без гемороя вставлять новую позицию в любое место списка.

Но это всё - пока только идея :)

Все это я могу сделать - но тёмными способами. Хочу поинтересоваться, наверняка есть менее геморные методы: можно ли одним запросом получить ближайшее значение определенного поля (в большую или меньшую сторону - по выбору) от заданного?

  Ответить  
 
 автор: Trianon   (17.02.2009 в 09:06)   письмо автору
 
   для: Zilog   (17.02.2009 в 02:04)
 

SELECT MIN(num) FROM tbl WHERE num > $spec

SELECT MAX(num) FROM tbl WHERE num < $spec

  Ответить  
 
 автор: Valick   (17.02.2009 в 13:04)   письмо автору
 
   для: Trianon   (17.02.2009 в 09:06)
 

Мне кажется это немного не то что хочет автор.
Речь не шла о минимальном или максимальном ближайшем значении, а о ближайшем значении как таковом если воспринимать БД как таблицу.
Но это смотря по какому полю сортировать....
без гемороя вставлять новую позицию в любое место списка
Я думаю весь геморой именно в этом...

  Ответить  
 
 автор: Zilog   (17.02.2009 в 13:19)   письмо автору
 
   для: Valick   (17.02.2009 в 13:04)
 

>Я думаю весь геморой именно в этом...

Нет, тут гемороя нет - ибо индекс по которому ведется сортировка - плавающее число. Впопрс в том, что надо получить индекс нижнего или вышестоящего поля, предварительно отсортировав эти поля по этому индексу. Как сделать это через задницу кучей запрсов - я знаю, но хочется уже по красивше сделать.

$index = SELECT index FROM table WHERE id=n

$destIndex = SELECT MIN(index ) FROM table WHERE index >$index

после чего старому полю надо будет присвоить новое значение.
вот примерно так

  Ответить  
 
 автор: Zilog   (17.02.2009 в 14:19)   письмо автору
 
   для: Valick   (17.02.2009 в 13:04)
 

>Речь не шла о минимальном или максимальном ближайшем значении, а о ближайшем значении как таковом если воспринимать БД как таблицу.

Да, именно так! Как его получить я пока не понял.

  Ответить  
 
 автор: Zilog   (17.02.2009 в 13:14)   письмо автору
 
   для: Trianon   (17.02.2009 в 09:06)
 

спасибо, а можно ли в одном запросе получить num одного элемента, и тот num что мы получаем в запросе выше?

  Ответить  
 
 автор: Zilog   (17.02.2009 в 14:25)   письмо автору
 
   для: Zilog   (17.02.2009 в 13:14)
 

вот тут помоему то что мне нужно.
http://www.sql.ru/forum/actualthread.aspx?tid=554150

может кто поможет разобраться с этими мегазапросами?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования