Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Соседние id текущей записи 
:(
    Опции темы
fastersin
Дата 17.3.2012, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 21.4.2011

Репутация: нет
Всего: нет



Здравствуйте, помогите найти оптимальное решение.

есть таблица Name

Id    name    type
1    vasya    1
2    petya    1
3    kolya    2
4    yura    1
5    dima    3
6    oleg    3
7    stas    3

Запрос

select * from `name` where `type` in (1,3) order by `id`

даст результат

Id    name    type
1    vasya    1
2    petya    1
4    yura    1
5    dima    3
6    oleg    3
7    stas    3

Далее я перехожу на страницу c id = 5

Где вывожу все данные строчки с id = 5

Имя – dima
Тип – 3

А в низу нужно вывести ссылки на предыдущую и следующую запись 

<- назад                        вперед ->

Но для этого мне нужно узнать их id


Подскажите как зная текущий id (в данном примере он равен 5) и условие выборки (в данном примере where `type` in (1,3)) составить SQL запрос чтобы получить соседние id (в данном примере предыдущий id = 4 а следующий за текущим id = 6)

PM MAIL WWW   Вверх
Fortop
Дата 17.3.2012, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 2
Всего: 42



Код

WHERE id<5 ORDER BY id DESC LIMIT 1


начало по вкусу

Добавлено @ 15:05
Это для предыдущего id, для следующего id запрос будет почти такой же, но в другом направлении и сравнения и сортировки 

Это сообщение отредактировал(а) Fortop - 17.3.2012, 15:05


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
fastersin
Дата 17.3.2012, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 21.4.2011

Репутация: нет
Всего: нет



спасибо за ответ.
после того как запостил вопрос и уехал, сразу же понял решение и понял какую чушь сморозил smile

решение очень простое

select * from `name` where id < 5 and `type` in (1,3) order by `id` limit 1 // предидущий id
select * from `name` where id > 5 and `type` in (1,3) order by `id` limit 1 // следующий id


Цитата

для следующего id запрос будет почти такой же, но в другом направлении и сравнения и сортировки 


подскажите, а зачем направление сортировки менять? у меня и выше приведенный код отработал верно.
PM MAIL WWW   Вверх
Fortop
Дата 18.3.2012, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 2
Всего: 42



Цитата(fastersin @  17.3.2012,  19:48 Найти цитируемый пост)
подскажите, а зачем направление сортировки менять? у меня и выше приведенный код отработал верно. 

Предыдущий у вас будет максимальный id из тех кто меньше.
А следующий это будет минимальны id из тех кто больше.


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.0951 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.