Пейджер для запроса со многими отношениями и полями

#mysql #sql

Вопрос:

У меня довольно сложное представление с двумя запросами (представление в представлении), один выбирает пользователей со связанными данными, а другой выбирает заказы со связанными данными. У обоих из них есть некоторые фильтры, но теперь у меня возникла проблема, и я ищу правильное и просто достойное решение с хорошей производительностью, потому что у меня много данных и связей в запросах. Предположим, что у меня есть:

Запрос 1 — Выберите пользовательские данные, некоторые левые соединения с другими таблицами, условия зависят от предоставленных параметров.

Запрос 2 — Выбор заказов зависит от пользователей из запроса 1, много соединений, условия зависят от параметров.

Я отображаю данные из двух запросов в одном представлении, пользователи, их данные, заказы и некоторые данные заказов, и теперь я хочу реализовать пейджер, но он должен работать и отображать правильное количество пользователей, зависит от фильтров запроса 1 и запроса 2. Таким образом, есть проблема, которую я не могу ограничить никаким запросом, потому что в другом тоже есть фильтры, так что, возможно, эти пользователи на самом деле не выбраны для отображения, зависит от других фильтров запросов. Поэтому я предполагаю, что есть два способа, один из которых-ввести эти запросы в цикл и собирать данные до тех пор, пока я не получу нужное количество результатов, зависящих от запроса. Другой способ-объединить эти два запроса в один, но есть проблема, из-за которой я получаю много строк на пользователя, поэтому я не могу установить ограничение на страницу и получать результаты только для определенного числа пользователей, например, 30. Потому что результаты будут похожи на пользователя 1 =gt; заказ 1, пользователя 1 =gt;gt; заказ 2, так что есть ли способ получить определенное количество уникальных результатов, зависит от идентификатора пользователя или чего-то еще. Дайте мне знать, если у вас возникнут какие-либо вопросы.

Комментарии:

1. Я застрял на твоем первом предложении. A VIEW , по определению, содержит один SELECT , а не «два запроса».

2. @RickJames да, но у меня есть мнение в представлении.

3. Трудно говорить о запросах, когда я их не вижу. И Вид из окна. И Вид в окне. И. SHOW CREATE TABLE

Ответ №1:

Примеры данных будут иметь больше смысла. Я не могу понять все требования здесь, в вашем вопросе. сможете ли вы создать некоторые примеры данных и поделиться ими с нами ? если вы имеете дело с большим количеством данных, избегайте циклов, так как это только ухудшит производительность.