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

Форум MySQL

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

 

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

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

тема: получение ближайших строк!
 
 автор: Diablo_   (24.09.2007 в 22:59)   письмо автору
 
 

Есть запрос к бд:

select * from `table` where `id`='100'

поле id, уникальное и первичное!
Вот как мне получить две близайшие записи, то есть 99 и 101?
В принципе, не сложно, можно прибавить и отнять еденицу, но а если нет чередования, то как в этом случае?

   
 
 автор: Unkind   (24.09.2007 в 23:25)   письмо автору
 
   для: Diablo_   (24.09.2007 в 22:59)
 

А какая цель? Постраничная навигация?

   
 
 автор: bronenos   (24.09.2007 в 23:26)   письмо автору
 
   для: Unkind   (24.09.2007 в 23:25)
 

SELECT * FROM `tbl` WHERE `id` BETWEEN 99 AND 101
вроде бы

   
 
 автор: Diablo_   (24.09.2007 в 23:34)   письмо автору
 
   для: bronenos   (24.09.2007 в 23:26)
 

1. да постраничная навигация!
2. >99 AND 101
я же говорил, что диапозон, не известен!!! Если бы он был известен, я бы и сам сделал!

   
 
 автор: Unkind   (24.09.2007 в 23:43)   письмо автору
 
   для: Diablo_   (24.09.2007 в 23:34)
 

Так это делается по-другому. Используется ... LIMIT с_какой_записи, сколько_записей.
А уж как хотите передавать значение "с какой записи" - Ваше дело.

   
 
 автор: Diablo_   (25.09.2007 в 11:39)   письмо автору
 
   для: 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
.......

И вот каким образом, я буду лимит использовать?????????????????????????????????????
Объяснил....просто на пальцах.........................не понять..........сложно

   
 
 автор: Trianon   (25.09.2007 в 12:20)   письмо автору
 
   для: 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 тем же успехом.

   
 
 автор: Diablo_   (25.09.2007 в 12:33)   письмо автору
 
   для: Trianon   (25.09.2007 в 12:20)
 

>>[i]"select * from `table` where `id`='89' "
этот запрос, вернёт только одну запись, а как мне три вернуть? с двумя ближайшими

   
 
 автор: Trianon   (25.09.2007 в 13:23)   письмо автору
 
   для: Diablo_   (25.09.2007 в 12:33)
 

не бывает ближайших записей.
Записи лежат внавал.

   
 
 автор: oradev   (25.09.2007 в 13:26)   письмо автору
 
   для: Trianon   (25.09.2007 в 13:23)
 

Порядок строк может гарантировать order by и только order by
Запишите это и не забываете никогда.

   
 
 автор: Trianon   (25.09.2007 в 13:29)   письмо автору
 
   для: oradev   (25.09.2007 в 13:26)
 

>to: Trianon (25.09.2007 в 13:23)
> Порядок строк может гарантировать order by и только order by
>Запишите это и не забываете никогда.
я вроде как и не забывал.

PS. ссылка "ответить" есть у любого сообщения. Не только у последнего.

   
 
 автор: Diablo_   (25.09.2007 в 13:34)   письмо автору
 
   для: oradev   (25.09.2007 в 13:26)
 

значит подобное сделать одним запросом не рекльно?!
А вообще, идеи то есть по этому поводу?
Или кто-то ещё не понял вопроса ;-D

   
 
 автор: oradev   (25.09.2007 в 13:50)   письмо автору
 
   для: 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 не в укор вам было сказано.

   
 
 автор: Diablo_   (26.09.2007 в 01:24)   письмо автору
 
   для: oradev   (25.09.2007 в 13:50)
 

>ник: oradev
не понял я как это сделать! не проходит запрос!

   
 
 автор: Unkind   (25.09.2007 в 15:29)   письмо автору
 
   для: Diablo_   (25.09.2007 в 11:39)
 

Че это Вы мне на пальцах объяснять решили? Это Вам надо на пальцах объяснять, что так постраничка не делается.

> а как я узнаю с какой?
А как Вы узнаете ID записи? В данном случае "100". От пользователя, через GET, наверное. Долбаеб.

   
 
 автор: oradev   (26.09.2007 в 00:23)   письмо автору
 
   для: Unkind   (25.09.2007 в 15:29)
 

Тсссссс ребята, не ругайтесь ...

   
 
 автор: Ralph   (26.09.2007 в 08:36)   письмо автору
 
   для: oradev   (26.09.2007 в 00:23)
 

А как же не ругаться :) Ведь тов. Unkind верно обьяснил,что в большинстве случаев навигация строится на простом запросе типа SELECT всеилиневсеполя FROM имятаблицы WHERE вашеусловие ORDER BY полепокоторомунадосортировать ASC/DESC LIMIT (количествосообщенийнастраницу*номерстраницы,количествосообщенийнастраницу),и похоже,что не люди не понимают его вопрос,а сам автор темы не совсем понимает,как работать с базой

   
 
 автор: oradev   (26.09.2007 в 13:08)   письмо автору
 
   для: Ralph   (26.09.2007 в 08:36)
 

Да успокойтесь вы, если автору так хочется - путь делает , это его проблема. Потом дойдет и до него.

   
Rambler's Top100
вверх

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