Лучший способ объединить несколько расширенных запросов выбора MySQL - PullRequest
3 голосов
/ 03 июня 2011

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

Я хотел бы объединить в один оператор, чтобы ускорить результаты и упростить «загрузку большего количества»(см. внизу).

В каждом запросе используются команды SELECT, LEFT JOIN, WHERE и ORDER BY, которые не совпадают для каждой таблицы.

Мне может не понадобиться order by в каждом выражении, ноЯ хочу, чтобы конечный результат, в конечном счете, упорядочивался полем, представляющим время (необязательно одно и то же имя поля во всех таблицах).

Я бы хотел ограничить общее количество результатов запроса числом, в моем случае100.

Затем я использую циклические результаты и для каждой строки проверяю, установлен ли OBJECTNAME_ID (то есть; comment_id, event_id, upload_id), затем LOAD_WHATEVER_OBJECT, который принимает строку и помещает данные в массив.

Мне не придется потом сортировать массив, потому что он был загружен по порядку через mysql.

Позже в приложении я «загрузлю больше», пропустив первый100, 200 или любую другую страницу * 100 и ограничьте снова 100 с тем же запросом.

Конечный результат из базы данных будет выглядеть примерно так:

RESULT - выбранные поля изполе таблицы для сортировки является наибольшим RESULT - выбранные поля из возможно другой таблицы - поле для сортировки является следующим наибольшим RESULT - выбранные поля из возможно другой таблицы таблицы - поле для сортировки является третьим по величине и т. д., и т. д.

Я вижу много более простых комбинированных утверждений, но ничего подобного.

Любая помощь будет принята с благодарностью.

1 Ответ

2 голосов
/ 03 июня 2011

самым простым способом может быть СОЮЗ здесь (http://dev.mysql.com/doc/refman/5.0/en/union.html):

(SELECT a,b,c FROM t1)
UNION
(SELECT d AS a, e AS b, f AS c FROM t2)
ORDER BY a DESC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...