通过二级连接表加入不相关的表

时间:2010-12-26 06:00:23

标签: sql mysql

我在页面上有两个活动表:Views&评价。

视图
ID
时间戳
PROJECT_ID
USER_ID
page_id

评论
ID
时间戳
PROJECT_ID
USER_ID
PAGE_ID
评论

信息页
ID
PROJECT_ID
标题

现在页面与项目有关:

项目
ID
ACCOUNT_ID
标题

我正在尝试创建一个摘要页面,其中包含按时间排序的视图和注释(以便最新的视图/注释位于开头,按项目分组。此外,只有特定帐户的项目。

所以结果可能是:

项目1

观点5(6月20日)
查看4(6月18日)
评论5(6月15日)
评论4(6月14日)
评论3(6月12日)

项目3

观看3(6月10日)
查看2(6月8日)
评论2(6月7日)

项目2

查看1(6月5日)
评论1(6月4日)

如果您可以使用SQL(甚至是学说)来帮助解决这个问题,那将是非常棒的。

谢谢。

1 个答案:

答案 0 :(得分:2)

Select project_id, id, timestamp, Projects.title, 'view'  
From Views Inner Join Pages on Views.page_id = Pages.id  
Inner Join Projects on Pages.project_id = Projects.id  
UNION  
Select project_id, id, timestamp, Projects.title, 'comment'  
From Comments Inner Join Pages on Comments.page_id = Pages.id  
Inner Join Projects on Pages.project_id = Projects.id
Order By project_id, timestamp  

这应该给你一些你想要的东西。最后的文字是这样你可以告诉哪个是观看记录,哪个是评论。但基本上,关键是工会声明。

如果我误解了某些内容,请告诉我。