|
Модераторы: LSD |
|
polin11 |
|
||||||||
Шустрый Профиль Группа: Участник Сообщений: 122 Регистрация: 6.6.2015 Репутация: нет Всего: нет |
СУБД Postgresql есть таблица с городами и странами.
Отсортированный список
Австралия Беларусь Бельгия Германия Канада Россия Франция Япония Афины Брюссель Барселона Нужно написать несколько запросов, которые возвращают по 5 записей из этого списка. Начиная со 2 запроса, нужно в условие запроса передать последнюю запись, найденную в предыдущем запросе. Первый запрос без условия:
Получаем набор, все ОК: Австралия Беларусь Бельгия Германия Канада https://www.db-fiddle.com/f/SpTXQTSprkMr3syfk6DSE/0 Берем последнюю запись - Канада, нужно получить следующие 5 записей, которые находятся в списке под Канадой, например так Второй запрос:
https://www.db-fiddle.com/f/39cbZdNmr4HzVzsS1mnfxy/0 Проблема: возвращается только 3 записи (Россия, Франция, Япония), из-за использования сортировки is_country DESC NULLS LAST Третим запросом нужно вернуть одну запись: Барселона Как правильно написать 2 и 3 запросы, оставив такую сортировку, во второй запрос нужно использовать последнюю запись из 1 запроса, в 3 запрос нужно использовать последнюю запись из 2 запроса? |
||||||||
|
|||||||||
Akina |
|
|||
Советчик Профиль Группа: Модератор Сообщений: 20570 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 3 Всего: 453 |
Детский вопрос - из кольцевого списка выбрать заданное количество элементов списка последовательно заданное количество раз. Обычное деление с остатком.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
polin11 |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 122 Регистрация: 6.6.2015 Репутация: нет Всего: нет |
Попробую понятней описать проблему:
1) При первом вызове метода не передают параметры, метод возвращает 5 записей: Австралия Беларусь Бельгия Германия Канада 2) При следующем вызове метода передают последнюю запись из пред. вызова(Канада), мне нужно вернуть следующие 5 записей из списка, находящиеся под Канадой. Я не знаю второй это вызов, третий или четвертый. У меня просто есть запись - курсор (последняя запись из пред. вызова) Вопрос как написать такие запросы? |
|||
|
||||
Akina |
|
|||
Советчик Профиль Группа: Модератор Сообщений: 20570 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 3 Всего: 453 |
Фигня. При КАЖДОМ вызове в запрос передаётся параметр - порядковый номер вызова. Если не передан - первый. Всё. А дальше, как я сказал выше, кольцо и деление с остатком.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
LSD |
|
|||
Leprechaun Software Developer Профиль Группа: Модератор Сообщений: 15709 Регистрация: 24.3.2004 Репутация: 3 Всего: 537 |
Запросом такого не сделать, но можно написать процедуру которая будет сохранять номер последней прочитанной записи. Но тут есть большой вопрос в архитектуре всего приложения: что делать если приложение упало и не успело запроцессить все записи которые ей вернул запрос? -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PostgreSQL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |