Как структурировать этот SQL-запрос? - PullRequest
0 голосов
/ 21 сентября 2011

Так что в основном я получаю уведомления о новом контенте на моем сайте.У меня есть 4 таблицы -

  • статьи
  • СМИ
  • обновления
  • комментарии

Каждая таблица имеет наборсвоих собственных столбцов (я могу включить их, если кто-нибудь захочет).В каждой таблице есть один отдельный столбец, это столбец timestamp (столбец big int с данными из функции PHP time () ).Мое решение для получения последних 30 модификаций состоит в том, чтобы выбрать первые 30 строк из этих 4 таблиц, упорядоченных по убыванию отметки времени.

Вот запрос, который у меня пока есть, он не работает, и мне интересно, может ли кто-нибудь мне помочь.-

SELECT * FROM `articles` 
UNION SELECT * FROM `media` 
UNION SELECT * FROM `updates` 
UNION SELECT * FROM `comments` 
ORDER BY `timestamp` DESC 
LIMIT 30

РЕДАКТИРОВАТЬ: Ранее я также использовал другой запрос -

SELECT * FROM `articles` ,`media` ,`updates` ,`comments` 
ORDER BY `timestamp` DESC 
LIMIT 30

и продолжал получать эту ошибку - Столбец 'timestamp' в порядкепредложение неоднозначно

РЕДАКТИРОВАТЬ 2

Теперь я понимаю, что мне нужно использовать в своем выражении предложение AS , чтобы объединить эти результаты водин стол

Ответы [ 2 ]

3 голосов
/ 21 сентября 2011
SELECT a.*,m.*,u.*,c.* from articles AS a
LEFT JOIN media AS m ON (m.timestamp = a.timestamp)
LEFT JOIN updates AS u ON (u.timestamp = a.timestamp)
LEFT JOIN comments AS c ON (c.timestamp = a.timestamp)
ORDER BY timestamp desc LIMIT 30
0 голосов
/ 21 сентября 2011

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

SELECT TimeStamp,'Articles',Art_desc AS Description FROM articles
UNION ALL
SELECT TimeStamp,'Media',Media_Desc FROM Media
UNION ALL
SELECT TimeStamp,'Updates',Update_Desc FROM Updates
UNION ALL
SELECT TimeStamp,'Comments',Comment FROM Comments
ORDER BY timeStamp DESC LIMIT 30

По сути, вы создаете наборы результатов из 3 согласованных столбцов, поэтому UNION будет работать в этом случае.

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