Как структурировать этот SQL-запрос. Объединение нескольких таблиц?

ПРИМЕЧАНИЕ. Это не дубликат моего другого вопроса . Я изменил структуру таблицы и нуждаюсь в новой помощи с новым запросом.

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

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

Каждая таблица имеет набор собственных столбцов (я могу включить их, если кто захочет). В моей новой системе уведомлений, которую я разрабатываю, я определяю новейший контент по его метке. Значение timestamp представляет собой целое число, отформатированное в Unix Time .

Я только что изменил структуру таблицы, раньше, у моих таблиц были столбцы, которые были похожи. Например, как статьи, так и носители имели идентификатор столбца. Код SQL, который я использовал, – это –

SELECT a.*,m.*,u.*,c.* from articles AS a LEFT JOIN media AS m ON (m.mediaTimestamp = a.timestamp) LEFT JOIN updates AS u ON (u.updateTimestamp = a.timestamp) LEFT JOIN comments AS c ON (c.commentTimestamp = a.timestamp) ORDER BY a.timestamp desc LIMIT 30 

Однако при этом код возвратит несколько итераций столбца в одной строке (он вернет столбец id для статей и медиа!). Очевидно, когда я пытался получить данные через код, это дало бы мне данные для разных таблиц (вместо того, чтобы указывать мне идентификатор статьи, это дало бы мне идентификатор media).

Мое решение состояло в том, чтобы «дорисовать» мой код и назвать все столбцы в таблице (например, статьях) с их префиксом таблицы (таким образом, id станет articleID). Однако теперь вышеупомянутый SQL создает ошибки. Может кто-то «конвертировать» / реструктурировать этот SQL для меня.

попробуй это:

 SELECT a.*,m.*,u.*,c.* from articles AS a LEFT JOIN media AS m ON (m.mediaTimestamp = a.articleTimestamp) LEFT JOIN updates AS u ON (u.updateTimestamp = m.mediaTimestamp) LEFT JOIN comments AS c ON (c.commentTimestamp = u.updateTimestamp) ORDER BY a.articleTimestamp desc LIMIT 30