SQL-запрос для сбора записей из разных таблиц - требуется альтернатива UNION - PullRequest
1 голос
/ 04 октября 2009

Я запускаю SQL-запрос, чтобы получить базовые данные из нескольких таблиц. Сортировка по дате последнего обновления. Это ужасно сложно, и я думаю, есть ли альтернатива использованию предложения UNION ... Я работаю в PHP MYSQL.

На самом деле у меня есть несколько таблиц с новостями, статьями, фотографиями, событиями и т. Д., И мне нужно собрать их все в один запрос, чтобы показать простую информацию о том, что недавно было добавлено на веб-сайт.

Ответы [ 4 ]

1 голос
/ 04 октября 2009

Возможно, сделайте это на PHP, а не на MySQL - если вам нужны самые последние n элементы, извлеките последние n каждого из ваших новостей, статей, фотографий и событий, и сортируйте в PHP нужен последний n каждого из них, и вы затем обрежете набор данных в PHP). Это, вероятно, проще, чем объединять их с UNION, учитывая, что они могут иметь много разных элементов данных.

Я не знаю альтернативы UNION, которая делает то, что вы хотите, и, надеюсь, эти выборки не будут слишком дорогими. Хотя было бы разумно профилировать это.

0 голосов
/ 04 октября 2009

Вы можете посмотреть на это с другой стороны: вам нужна абсолютно обновленная информация? (когда кто-то вводит новую информацию, она должна появиться)

Если нет, вы можете иметь таблицу, содержащую результаты запроса в нужном вам формате (в качестве кэша), и обновлять эту таблицу каждые 5 минут или около того. Тогда ваша проблема с запросами становится тривиальной, так как вы можете запускать обновления как несколько обновлений в фоновом режиме.

0 голосов
/ 04 октября 2009

Нет ничего плохого в выполнении UNION (если только вы на самом деле не говорите о присоединении к освобожденным сущностям (т. Е. Имеющим отношения с внешним ключом).

НО вы можете использовать UNION ALL вместо UNION, так как UNION выполнит сортировку для удаления дублирующихся записей.

0 голосов
/ 04 октября 2009

Если вы используете Join в своем запросе, вы можете выбрать данные из разных таблиц, которые связаны с внешними ключами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...