Извлечение 'близлежащих' от определенного id записей

unlex

Новичок
Извлечение 'близлежащих' от определенного id записей

Такой вопрос: как , зная определенный id записи, извлечь 2 предыдущие и 2 последующие записи?
 

unlex

Новичок
я имел ввиду то, что может быть в sql есть метод, позволяющий выбрать некоторое кол-во подряд идущих записей, зная id только одной из них...
 

Фанат

oncle terrible
Команда форума
как только ты объяснишь sql, что такое "подряд идущие записи" - тут же можешь требовать метод
 

tf

крылья рулят
используй IF и вложенные запросы, будут проблемы в логике обращайся
 

Фанат

oncle terrible
Команда форума
unlex
не слушай tf, используй два простых запроса
 

WP

^_^
[sql](SELECT * FROM ... WHERE `id` > $id ORDER BY `id` LIMIT 2)
UNION
(SELECT * FROM ... WHERE `id` < $id ORDER BY `id` DESC LIMIT 2)
[/sql]
 

tf

крылья рулят
млин, как сказал *****, логику придумай =))))))

-~{}~ 26.06.07 16:55:

хм
 

Фанат

oncle terrible
Команда форума
WP
молодец, доказал, какой ты умный мальчик.
а то все думали, что ты дурак
 

Фанат

oncle terrible
Команда форума
ты должен формализовать понятие "соседние".
то есть, объяснить его так, чтобы поняла база данных.

что значит - соседние? по какому признаку ты их находишь?
 

WP

^_^
*****
:) Человеку же сказали ошибочный метод.
unlex
Пойми что БД это НЕ список, и нельзя ее представлять как список. Соседними могут быть только ряды в результате. В твоем случае это те два ряда у которых id самые большие среди тех рядов у кого id меньше заданного, и те два ряда у которых самые маленькие среди тех рядов у кого id больше заданного. Как сказал *****, надо двумя запросами, а можно UNION, это те же яйца только сбоку.
 

unlex

Новичок
ну допустим в таблице table (id, mytext) имеем след записи
1 u
3 b
8 t
15 v
18 e
19 o
25 g

SELECT id FROM table WHERE mytext='v'
получим 15
теперь необходимо извлечь записи с id 3,8 и 18,19.
Вот что я имел ввиду.
Вариант предложенный WP, как раз то , что доктор прописал ))
 

Фанат

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

-~{}~ 26.06.07 17:19:

ты даже не указал, по какому полю упорядочиваешь свою базу, чтобы "записи шли по порядку".
а WP - дурак, который не понимает, чего не понимают другие. Думает, будто все знаю столько же, сколько и он
 

WP

^_^
*****
Можно было конечно поиграть в непонимание, но очевидно что записи идут в порядке натуральной сортировки id.
> Вариант предложенный WP, это ужасно.
Чем?
 

Фанат

oncle terrible
Команда форума
Это, ЧЕРТ ВОЗЬМИ, не "игра в непонимание"!
а реальное непонимание, ИДЕНТИЧНОЕ непониманию клиента

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

unlex

Новичок
Хорошо, усложним ситуацию: записи должны выводиться упорядоченно по полю putDate типа DATETIME. Т.е по времени добавления записи...
хотя можно и оставить ORDER BY id
 

Фанат

oncle terrible
Команда форума
скажи - это действительно представляет для тебя такую проблемы?
то есть, смысла приведенного WP кода ты так и не понял?
и даже по образцу, просто модицифировав его, не знаешь, как сделать?
 
Сверху