如何构建这个SQL查询.组合多个表


How to structure this SQL query. Combining multiple tables?

注意:这不是我的另一个问题的重复。我已经改变了表结构,需要新的帮助与一个新的查询。

基本上我在我的网站上收到新内容的通知。我有4张表-

    文章
  • 媒体
  • 更新
  • 论>

每个表都有一组自己的列(如果有人想要,我可以包括这些列)。在我正在设计的新通知系统中,我通过时间戳来确定最新的内容。时间戳值为整型,格式为Unix Time。

我刚刚改变了我的表结构,以前,我的表都有类似的列。例如,文章和媒体都有列id。我使用的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列!)。显然,当我试图通过代码获取数据时,它会给我不同表的数据(而不是给我文章id,它会给我媒体id)。

我的解决方案是"漂亮"我的代码和名称的所有列在一个表(如文章)与他们的表前缀(所以id将成为articleID)。但是,现在上面的SQL正在产生错误。有人可以"转换"/重组这个SQL为我。

try this:

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