powered by simpleCommunicator - 2.0.35     © 2025 Programmizd 02
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Запрос на N-кратную блочную выборку из случайной позиции таблицы
1 сообщений из 1, страница 1 из 1
Запрос на N-кратную блочную выборку из случайной позиции таблицы
    #39798091
Познающий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую!

Есть необходимость за один запрос получать 1/3/10... т.е. "N" блоков по 10/25/32/... т.е. "X" записей в каждом блоке.
В виде одной итоговой выборки с кол-вом строк N*X. Столбцами выступают уникальные данные. К примеру пусть их два.
При следующих доп.условиях: параметры N и X задаются в теле запроса/биндятся для внешнего API.
Внутри блоков записи идут в сортировке, заданной параметром order BY .....
Их кол-во "подряд" - и есть первый входной параметр запроса.
Еще параметром для этих блоков являются вшитые пара условий вида where param1 is null and param2 = 12.
Эти блоки должны выбираться случайным образом. Т.е. если надо найти 3 блока по 5 записей, то, к примеру, первый блок выбирается с первой записи в таблице и по пятую. Второй блок - с 118 и по 123. Третий блок с 21 записи и по 26.
И всего в итоговой таблице/выборке мы видим 3*5=15 записей.
Т.е. очередность выборки блоков - величина случайная!
НО блоки не должны пересекаться! Т.е. всегда очередной блок К должен содержать "X" записей, которые НЕ участвовали в блоках с 1 по К-1 шаг. Т.е. все 15 примерных записей из примера выше - уникальны! Равно как и в самой таблице эти поля уникальны.

Кто как видит решение кроме как "в лоб" - когда N раз повторяем запрос с главной частью -
LIMIT X OFFSET abs(random() % (select count(*) from TABLE));

Просто в этом случае на I-ом повторе (I<=N) может случайно (нам же стартовую позицию блока=OFFSET надо случайно выбирать) выйти так, что часть записей этого блока (или даже весь он) окажутся равны уже ранее выбранным записям прежнего блока из предыдущего шага К=[1; I). Т.е. нарушаем правило: "блоки не должны пересекаться!"
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Запрос на N-кратную блочную выборку из случайной позиции таблицы
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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