如何构建此 SQL 查询。合并多个表? [关闭]

2024-04-14

注意:这不是重复的我的另一个问题 https://stackoverflow.com/questions/7494392/how-to-structure-this-sql-query。我已经更改了表结构,并且需要新查询的新帮助。

所以基本上我会收到网站上新内容的通知。我有 4 张桌子 -

  • articles
  • media
  • updates
  • comments

每个表都有一组自己的列(如果有人需要,我可以包括这些列)。在我正在设计的新通知系统中,我通过时间戳确定最新内容。时间戳值是一个整数,格式为Unix时间 http://en.wikipedia.org/wiki/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 吗?


尝试这个:

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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何构建此 SQL 查询。合并多个表? [关闭] 的相关文章