Лучший способ объединить несколько расширенных запросов mysql select

#mysql #multiple-select #multiple-select-query

#mysql #множественный выбор #запрос множественного выбора

Вопрос:

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

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

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

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

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

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

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

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

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

РЕЗУЛЬТАТ — выбранные поля из таблицы — поле для сортировки по наибольшему РЕЗУЛЬТАТУ — выбранные поля из, возможно, другой таблицы — поле для сортировки по следующему наибольшему РЕЗУЛЬТАТУ — выбранные поля из, возможно, другой таблицы — поле для сортировки по третьему наибольшему значению и т.д. и т.п.

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

Любая помощь была бы ВЫСОКО оценена.

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

1. Подробнее о синтаксисе объединения читайте в документах MySQL.

Ответ №1:

самым простым способом может быть ОБЪЕДИНЕНИЕ здесь (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
  

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

1. Спасибо! .. Я думал, что это было бы сложнее с дополнительными командами в нем, lol. Я расскажу здесь о том, как это работает. Похоже, я тоже могу использовать ссылку для order by, это круто.

2. Все таблицы и выборки имеют разное количество столбцов. Для каждой таблицы это по-разному.

3. Можете ли вы привести пример? Разве невозможно заполнить отсутствующие столбцы нулевыми значениями или пустыми строками? что-то вроде SELECT … NULL как NA_col1, «» как NA_col2 …