gzhegow
@gzhegow
aka "ОбнимиБизнесмена"

Как выбрать разное количество записей из двух таблиц и сделать сводную постраничную навигацию?

Вопрос касается скорее SQL баз, но и в целом не могу разобраться как это должно быть, может кто уже делал?
Есть две таблицы - в одной лежит коллекция товаров имеющих персональные страницы, в другой - не имеющая персональные страницы.

Задача вывести список поменьше с урлами (100 записей) и список побольше без урлов (1000 записей), при этом сделать постраничную навигацию так, чтобы постраничная навигация не потеряла между страницами какой-то из списков.

Запрос UNION ругается, что LIMIT неприемлем между двумя таблицами.
Если не делать LIMIT - то вся первая таблица (2 млн) будет перед второй таблицей (тоже 2 млн), по итогу LIMIT 1100 вытянет 1100 записей из первой таблицы, а надо 100 из той и 1000 из этой.

Как тут быть то вообще?
  • Вопрос задан
  • 177 просмотров
Решения вопроса 1
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
Сделайте отдельные переменные текущей страницы для этих двух списков, page_l1 и page_l2 например.
Ну а по хорошему, можно рассчитать одну навигацию для двух списков сразу.
Например, в одной таблице 20000123 записей, во второй 123450, приравняемся к большей таблице и ее показу в 1000 записей, тогда
20000123/1000=123450/X
X = (123450 * 1000) / 20000123 = 6
Итого на 1000 записей из большей таблицы, мы будем показывать 6 записей из меньшей.

Проблема в том, что если меньшая таблица сильно короче, то нам придется из нее выбирать по одной записи, и у нас в самом конце пагинации списка из меньшей таблицы вообше не будет.
PS. Поправьте в расчетах, если ошибся
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@aol-nnov
ну выбери ты их двумя запросами и скомбинируй на бэкенде, делов-то!..
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы