#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:
Примеры данных будут иметь больше смысла. Я не могу понять все требования здесь, в вашем вопросе. сможете ли вы создать некоторые примеры данных и поделиться ими с нами ? если вы имеете дело с большим количеством данных, избегайте циклов, так как это только ухудшит производительность.