![]() |
Как правильно задать запрос к мускулу
Есть база данных: с полем, которое имеет значения:
ответ11111 ответ11112 ответ11113 ответ11114 ответ11116 ответ11117 ответ11118 ответ11119 Задаю запрос по поиску поля *ответ11115* (которого к примеру, нет в базе) Мне нужно, чтоб мускул показал мне 2 поля сверху по списку и 2 поля снизу по списку, как бы альтернативу отсуствующему: ответ11113 ответ11114 ответ11116 ответ11117 Само поле не цифровое, а смешаное.. Может немного сумбурно, но примерно так :) какой запрос рациональней всего сделать, чтоб как можно меньше напрягать базу... |
Сомнительно что такое одним запросом возможно оформить.
|
можно попробовать что-то типа
select IFNULL(field, select field from table where field < 'ответ11115' order by field desc limit 2 union select field from table where field > 'ответ11115' order by field limit 2) from table where field = 'ответ11115' не могу поручиться за 100% работоспособность (БД под рукой нет, не могу попробовать) - но, по идее, должно сработать нечто типа этого |
Цитата:
Цитата:
Если я правильно понял, и первое, то можно так: Код:
SELECT * |
суть в том, что если этот запрос идёт, то по условию ответа точно нет...
Как альтернатива - может быть и +\- 1 - не суть важно Я немного ввёл вас в заблуждение всех неправильно поставленой задачей.. Второй пример поля из этой же задачи. Ищем запросом поле - .автопром есть поля: .авто .автопроизводитель .автомобилестроение .автомобиль его нет в базе - это уже известно точно, мне нужно, чтоб запрос выдал: .автопроизводитель .автомобилестроение Которые должны были бы стоять в списке до и после слова: .автопром - если бы оно там было.. Вот тут думаю я пояснил правильно... |
Цитата:
В моем запросе именно так - либо тот что соответствует, либо возвращается 4 вокруг. Цитата:
|
а если поля в базе отсортированы по алфавиту, не проще сделать
Код:
SELECT * FROM items WHERE itemvalue < 'автомобиль' ORDER BY itemvalue DESC LIMIT 2; |
Цитата:
Ну а так, да, в свете новой постановки задачи, мой подзапрос перепишется на UNION приблизительно тех, что указал Saruman. Собственно и в первом случае так можно было, просто я хотел одним запросом все... P.S. Не хорошо новую постановку задачи дописывать уже после ответа поста :) |
Цитата:
Цитата:
|
Цитата:
В общем разумеется, если подразумевается не алфавитная сортировка (но не похоже чобы это тот случай, особенно в свете примера), то нужно будет вписать корректное условие в ORDER BY, а не просто имя поля для сортировки. Цитата:
Ладно, не думаю что это было специальо сделано, проехали. |
| Часовой пояс GMT +4, время: 03:02. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.