SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 17.06.2011 12:16:59

wine-time
Завсегдатай
Зарегистрирован: 17.06.2011
Сообщений: 42

Объединение двух запросов select в один

Подскажите, как можно объединить 2 запроса в один:
1) SELECT object FROM objects WHERE id > 'n' AND type = 'type_name' LIMIT 1;
2) SELECT object FROM objects WHERE id < 'n' AND type = 'type_name' LIMIT 1;
Т.е. я ищу соседние с n строки, id которых может идти не по-порядку. Вкурил в математические и логические функции, но не могу для себя составить какого-то адекватного сценария.
Как эти запросы можно объединить?

Неактивен

 

#2 17.06.2011 15:03:05

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Объединение двух запросов select в один

Написать слово UNION между строками 1 и 2?

Неактивен

 

#3 17.06.2011 15:49:44

wine-time
Завсегдатай
Зарегистрирован: 17.06.2011
Сообщений: 42

Re: Объединение двух запросов select в один

Не сильно похоже на правду.
Заморочился получением соседних строк через получение массива, анализ ключа текущей строки и, соответственно, получение ключей соседних строк.
Мне подсказали, что лучше бы не работать с массивами, а использовать запросы к бд с двумя параметрами и лимитом выдачи. У меня это совершеннейше вылетело из головы, я обрадовался.
Ещё подсказали, что запросы можно свести к одному.
Зарылся в математические и логические функции. Потом осознал, что проход осуществляется с начала таблицы, т.е. в запросе, где id < 'n' мне нужно ещё и в обратном порядке идти.
Видимо, не в том направлении я мыслю (объединить запросы в один), нужно бы придумать запрос, который бы дал соседние строки как-то иначе

Отредактированно wine-time (17.06.2011 15:51:05)

Неактивен

 

#4 17.06.2011 17:49:24

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Объединение двух запросов select в один

А мое решение чем Вас не устраивает? Оно удовлетворяет всем условиям и
может использовать индекс.

Неактивен

 

#5 18.06.2011 11:09:16

wine-time
Завсегдатай
Зарегистрирован: 17.06.2011
Сообщений: 42

Re: Объединение двух запросов select в один

Да, признаться, всем устраивает ваше решение smile
Синтаксис mysql знаю весьма плохо, поэтому открытие такого способа делает меня очень вам благодарным.
Просто где-то в глубине души надеялся, что можно как-то составить условие похитрее, чтобы проходы свести к одному smile
Спасибо.

Отредактированно wine-time (18.06.2011 11:09:54)

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson