#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 …