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

Форум MySQL

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

 

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

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

тема: Сложная выборка.
 
 автор: diablo_   (19.06.2014 в 21:10)   письмо автору
 
 

Всем привет.
Нeжен ваш совет!
Дано:
пять записей в базе: (id, title)
1, 'Олени'
2, 'Кошки'
3, 'Собаки'
4, 'Мухи'
5, 'Еноты'.

Если мы с делаем выборку с сортировкой по алфавиту, то получим записи в порядке: 5, 2, 4, 1, 3.

Задача: Пользователь выбрал записи 3 (Собаки). Необходимо выбрать ближайшую запись с обеих сторон (если запись не последняя).

То есть, если я выбрал запись 3, то с одной стороны пусто, а вот с другой должно быть 1. А если я выбрал запись 2 (кошки), слева у меня должно быть 5, а справа 4.

Есть ли идеи как такое сделать? смена id не рассматривается.

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

  Ответить  
 
 автор: Igorek   (20.06.2014 в 09:18)   письмо автору
 
   для: diablo_   (19.06.2014 в 21:10)
 

<?
(
SELECT *, 'left' as dir
FROM ttt
WHERE str 
'Кошки'
ORDER BY str DESC
LIMIT 1

UNION
(
SELECT *, 'right' as dir
FROM ttt
WHERE str 
'Кошки'
ORDER BY str ASC
LIMIT 1
)


Результат:
5 - Еноты - left
4 - Мухи - right

  Ответить  
 
 автор: Sfinks   (02.07.2014 в 20:23)   письмо автору
 
   для: Igorek   (20.06.2014 в 09:18)
 

> diablo_ (19.06.2014 в 21:10)
> Нeжен ваш совет!

=)

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

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