powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выбрать по 2 строки перед и после определенной строки
4 сообщений из 4, страница 1 из 1
Выбрать по 2 строки перед и после определенной строки
    #39141435
saxap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени ув. Эксперты!
Помогите прошу с такой задачей:
Есть такой запрос:
Код: sql
1.
2.
3.
4.
5.
SELECT a.Message_ID, a.Priority, a.name
FROM  `Message2000` a
WHERE a.`Subdivision_ID` =7
ORDER BY a.`Priority` DESC , a.`Message_ID` DESC 
LIMIT 0 , 20



Мне нужно как то достать по 2 строки до и после определенной строки, т.е. если за определенную строку взять "Закуску 5", то мне надо достать закуски 4 и 3 (это до) и закуски после 6 и 7.
Пытаюсь достать так:
Чтобы взять до:
Код: sql
1.
2.
3.
4.
5.
SELECT a.Message_ID, a.Priority, a.name
FROM  `Message2000` a
WHERE a.`Subdivision_ID` =7 AND a.Priority <= 4 AND a.Message_ID !=8
ORDER BY a.`Priority` DESC , a.`Message_ID` DESC 
LIMIT 0 , 2


Получаю:

А надо получить закуску 4 и закуску 3.
Чтобы получить после:
Код: sql
1.
2.
3.
4.
5.
SELECT a.Message_ID, a.Priority, a.name
FROM  `Message2000` a
WHERE a.`Subdivision_ID` =7 AND a.Priority >= 4 AND a.Message_ID !=8
ORDER BY a.`Priority` ASC , a.`Message_ID` ASC 
LIMIT 0 , 2


Получаю:

А надо получить закуску 6 и 7.

Понятное дело что соль в одинаковом приоритете, но он будет совпадать все равно, а задавать условия типа Message_ID > 8 я не могу, потому что поле с приоритетом должно быть первостепенным и если какой нибудь закуске с Message_ID = 1 зададут приоритет = 999, то она должна быть первой.

Собственно вопрос: как сделать такой срез выборки величиной в 2 строки чтобы достать ровно то, что достается в самом первом общем запросе зная поля только определенной строки?
...
Рейтинг: 0 / 0
Выбрать по 2 строки перед и после определенной строки
    #39141535
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
общая схема "в лоб"
Код: sql
1.
2.
3.
SELECT * FROM .........  ORDER BY  ..... LIMIT 2
UNION ALL
SELECT * FROM .........  ORDER BY  DESC ..... LIMIT 2
...
Рейтинг: 0 / 0
Выбрать по 2 строки перед и после определенной строки
    #39141661
saxap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не, UNION тут не при чем.
Решил проблему так:
У каждого итема запоминаю порядковый номер, а далее достаю итемы до и после таким же запросом но с разными лимитами.
...
Рейтинг: 0 / 0
Выбрать по 2 строки перед и после определенной строки
    #39141816
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
saxapУ каждого итема запоминаю порядковый номер, а далее достаю итемы до и после таким же запросом но с разными лимитами.Именно через UNION ALL это обычно и делается.
Если вам удобнее двумя отдельными запросами - ваше право.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выбрать по 2 строки перед и после определенной строки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]