|
|
|
| Есть запрос к бд:
select * from `table` where `id`='100'
|
поле id, уникальное и первичное!
Вот как мне получить две близайшие записи, то есть 99 и 101?
В принципе, не сложно, можно прибавить и отнять еденицу, но а если нет чередования, то как в этом случае? | |
|
|
|
|
|
|
|
для: Diablo_
(24.09.2007 в 22:59)
| | А какая цель? Постраничная навигация? | |
|
|
|
|
|
|
|
для: Unkind
(24.09.2007 в 23:25)
| |
SELECT * FROM `tbl` WHERE `id` BETWEEN 99 AND 101
| вроде бы | |
|
|
|
|
|
|
|
для: bronenos
(24.09.2007 в 23:26)
| | 1. да постраничная навигация!
2. >99 AND 101
я же говорил, что диапозон, не известен!!! Если бы он был известен, я бы и сам сделал! | |
|
|
|
|
|
|
|
для: Diablo_
(24.09.2007 в 23:34)
| | Так это делается по-другому. Используется ... LIMIT с_какой_записи, сколько_записей.
А уж как хотите передавать значение "с какой записи" - Ваше дело. | |
|
|
|
|
|
|
|
для: Unkind
(24.09.2007 в 23:43)
| | Так а как ч узнаю с какой?:??????
Обхясняю на пальцах:
есть записи в бд
поле id (иникальное, первичное)
1
2
3
4
76
89
102
120
134
199
.......
Делаем запрос:
"select * from `table` where `id`='89' "
эти запросом, я волучаю вот эту запись вот отсюда:
1
2
3
4
76
89
102
120
134
199
.......
Но мне нужно кроме той записи, получить ещё и ближайшие записи:
1
2
3
4
76
89
102
120
134
199
.......
И вот каким образом, я буду лимит использовать?????????????????????????????????????
Объяснил....просто на пальцах.........................не понять..........сложно | |
|
|
|
|
|
|
|
для: Diablo_
(25.09.2007 в 11:39)
| | >"select * from `table` where `id`='89' "
>эти запросом, я волучаю вот эту запись вот отсюда:
>1 2 3 4 76 89 102 120 134 199
этот запрос может вернуть и 76 4 3 2 1 199 134 120 102 89
и 120 102 89 4 3 2 1 199 76 134 . C тем же успехом. | |
|
|
|
|
|
|
|
для: Trianon
(25.09.2007 в 12:20)
| | >>[i]"select * from `table` where `id`='89' "
этот запрос, вернёт только одну запись, а как мне три вернуть? с двумя ближайшими | |
|
|
|
|
|
|
|
для: Diablo_
(25.09.2007 в 12:33)
| | не бывает ближайших записей.
Записи лежат внавал. | |
|
|
|
|
|
|
|
для: Trianon
(25.09.2007 в 13:23)
| | Порядок строк может гарантировать order by и только order by
Запишите это и не забываете никогда. | |
|
|
|
|
|
|
|
для: oradev
(25.09.2007 в 13:26)
| | >to: Trianon (25.09.2007 в 13:23)
> Порядок строк может гарантировать order by и только order by
>Запишите это и не забываете никогда.
я вроде как и не забывал.
PS. ссылка "ответить" есть у любого сообщения. Не только у последнего. | |
|
|
|
|
|
|
|
для: oradev
(25.09.2007 в 13:26)
| | значит подобное сделать одним запросом не рекльно?!
А вообще, идеи то есть по этому поводу?
Или кто-то ещё не понял вопроса ;-D | |
|
|
|
|
|
|
|
для: Diablo_
(25.09.2007 в 13:34)
| | >значит подобное сделать одним запросом не рекльно?!
>А вообще, идеи то есть по этому поводу?
>Или кто-то ещё не понял вопроса ;-D
Да почему же. Просто сам вопрос, поставленный вами некорректен. Я догадываюсь чего вы хотите сделать, но вы вопрос задали не так как нужно. Сам запрос имеет вид:
SELECT my_tab.val, my_tab.next_value, my_tab.prev_value
FROM (SELECT mt1.ID val, MIN (mt2.ID) next_value, MAX (mt3.ID) prev_value
FROM my_tab mt1 LEFT JOIN my_tab mt2 ON mt2.ID > mt1.ID
LEFT JOIN my_tab mt3 ON mt3.ID < mt1.ID
GROUP BY mt1.ID) my_tab
WHERE my_tab.val = $v;
|
P.S. Trianon не в укор вам было сказано. | |
|
|
|
|
|
|
|
для: oradev
(25.09.2007 в 13:50)
| | >ник: oradev
не понял я как это сделать! не проходит запрос! | |
|
|
|
|
|
|
|
для: Diablo_
(25.09.2007 в 11:39)
| | Че это Вы мне на пальцах объяснять решили? Это Вам надо на пальцах объяснять, что так постраничка не делается.
> а как я узнаю с какой?
А как Вы узнаете ID записи? В данном случае "100". От пользователя, через GET, наверное. Долбаеб. | |
|
|
|
|
|
|
|
для: Unkind
(25.09.2007 в 15:29)
| | Тсссссс ребята, не ругайтесь ... | |
|
|
|
|
|
|
|
для: oradev
(26.09.2007 в 00:23)
| | А как же не ругаться :) Ведь тов. Unkind верно обьяснил,что в большинстве случаев навигация строится на простом запросе типа SELECT всеилиневсеполя FROM имятаблицы WHERE вашеусловие ORDER BY полепокоторомунадосортировать ASC/DESC LIMIT (количествосообщенийнастраницу*номерстраницы,количествосообщенийнастраницу),и похоже,что не люди не понимают его вопрос,а сам автор темы не совсем понимает,как работать с базой | |
|
|
|
|
|
|
|
для: Ralph
(26.09.2007 в 08:36)
| | Да успокойтесь вы, если автору так хочется - путь делает , это его проблема. Потом дойдет и до него. | |
|
|
|