Задавайте вопросы, мы ответим
Вы не зашли.
Подскажите, как можно объединить 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 которых может идти не по-порядку. Вкурил в математические и логические функции, но не могу для себя составить какого-то адекватного сценария.
Как эти запросы можно объединить?
Неактивен
Написать слово UNION между строками 1 и 2?
Неактивен
Не сильно похоже на правду.
Заморочился получением соседних строк через получение массива, анализ ключа текущей строки и, соответственно, получение ключей соседних строк.
Мне подсказали, что лучше бы не работать с массивами, а использовать запросы к бд с двумя параметрами и лимитом выдачи. У меня это совершеннейше вылетело из головы, я обрадовался.
Ещё подсказали, что запросы можно свести к одному.
Зарылся в математические и логические функции. Потом осознал, что проход осуществляется с начала таблицы, т.е. в запросе, где id < 'n' мне нужно ещё и в обратном порядке идти.
Видимо, не в том направлении я мыслю (объединить запросы в один), нужно бы придумать запрос, который бы дал соседние строки как-то иначе
Отредактированно wine-time (17.06.2011 15:51:05)
Неактивен
А мое решение чем Вас не устраивает? Оно удовлетворяет всем условиям и
может использовать индекс.
Неактивен
Да, признаться, всем устраивает ваше решение
Синтаксис mysql знаю весьма плохо, поэтому открытие такого способа делает меня очень вам благодарным.
Просто где-то в глубине души надеялся, что можно как-то составить условие похитрее, чтобы проходы свести к одному
Спасибо.
Отредактированно wine-time (18.06.2011 11:09:54)
Неактивен