powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Постраничный вывод данных из нескольких таблиц
7 сообщений из 7, страница 1 из 1
Постраничный вывод данных из нескольких таблиц
    #32314257
Alexey Vaskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть несколько таблиц (для простоты возьмем две). Производится поиск. По умолчанию, если не указано другое, поиск производится по всем таблицам на совпадение. Необходимо результаты поиска выводить постранично. В случае одной таблицы проблем никаких. Здесь великолепно справляется LIMIT. Но вот вопрос: как вывести постранично данные сначала из одной таблицы, потом из другой, и, в случае большего количества таблиц, так далее. Приведу пример.
Допустим есть две таблицы (синтаксис описания абстрактный)

tabl1 (
id int ...,
text varchar(255)
)

tabl2 (
id int ...,
text varchar(255)
)

Поиск по текстовым полям дал 23 записи из первой таблицы и 12 из второй. На странице решено выводить по 10 записей. Сначала необходимо показать данные из первой таблицы, затем из второй.
Для первой таблицы использование LIMIT offset, rows оправдывает себя. Но как применить его для второй, т.к. на первой и второй страницах данные из второй таблицы не будут показаны вообще, на третьей лишь частично (7 записей), а на четвертой - оставшиеся 5.

UNION, который позволил бы решить проблему не предлагать. Т.к. он появился лишь в 4.0.0, а провайдер использует 3.23.58.
Временные таблицы тоже не очень интересны, т.к. существуют лишь в пределах времени жизни соединения с БД, которое закрывается при окончании работы скрипта.
...
Рейтинг: 0 / 0
Постраничный вывод данных из нескольких таблиц
    #32314671
Фотография ©Felix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно подумать решение чтоб выводить несколько записий из таб1 и несколько из таб2 чтоб в суме было 10....

алгорит примерно такой...

-считаем общее кол во записей 23+12=35
-делим на 10 получаем 3,5 то есть будем иметь три полных страници и одну не всю...
-кол во записей табл1 делим на число страниц 23/4=5,75
-на каждой(кроме последней) странице показываем 6 записей из табл1 и 10-6=4 из табл2
-на последней остатки...

нужно только подумать куда лучше округлять...

этот вариант если можна показывать вперемешку конечно....


Felix
...
Рейтинг: 0 / 0
Постраничный вывод данных из нескольких таблиц
    #32314681
Фотография ©Felix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
перечитал Ваш пост... очевидно нельзя вперемешку...
тогда отслеживайте кол во записей на последней странице для табл1 то есть там где их будет 3... и потом дополняйте 7-ю записями из табл2


я как бы и проблемы не вижу.... просто будет LIMIT n,m где м,н будет в зависимости от страници....

Felix
...
Рейтинг: 0 / 0
Постраничный вывод данных из нескольких таблиц
    #32314823
Alexey Vaskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если не затруднит, можно примерчик чиркнуть как это будет выглядеть с использованием LIMIT? Если имеется в виду, что сначала производить манипуляции с вычислением сначала смещения и количества строк для одной таблицы, затем для второй, и т.д., то это не выход. С увеличением числа таблиц увеличится нагроможденность и усложнится логика.
...
Рейтинг: 0 / 0
Постраничный вывод данных из нескольких таблиц
    #32314971
Фотография ©Felix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
соглачен насчет логики.. будет громоздко.... но если нет другого выхода то нужно думать в ето сторону.... (будет время я прикину...)

а почему не вариант с временной таблицей....??? забрасывать все туда а потом выводить...

Временные таблицы тоже не очень интересны, т.к. существуют лишь в пределах времени жизни соединения с БД, которое закрывается при окончании работы скрипта.

а больше ей жить и не нужно.....

Felix
...
Рейтинг: 0 / 0
Постраничный вывод данных из нескольких таблиц
    #32315389
Макс М.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
такая проблема обычно свидетельствует о неправильной организции данных.
Измени структуру БД.
...
Рейтинг: 0 / 0
Постраничный вывод данных из нескольких таблиц
    #32315504
Alexey Vaskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2@Felix
Если Вы имеете в виду, что каждый раз при выполнении скрипта производить поиск без ограничений, запихивать все во времянку, а затем в зависимости от страницы выводить результаты, то я уже думал об этом. Не очень нравится сам подход. Но как вариант использовать можно. Мне же нравится другой способ использования временных таблиц (он очевиден): при нажатии на кнопку "Найти" производить один раз поиск с условиями и запихивать все во временную таблицу. А затем при навигации по страницам выбирать просто уже из нее простым использованием LIMIT.

2Макс М
Со структурой все в порядке. То, что приведено в примере и приведено для примера. В действительности таблицы имеют из общего только текстовые поля, по которым и производится поиск. В остальном они различны . Одна из таблиц является master'ом для другой. Соотношение один ко многим. Не в этом дело.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Постраничный вывод данных из нескольких таблиц
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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