我正在创建一个网站,用户可以在其中创建相册,创建活动,上传视频等。我想要做的是列出给定用户最近的活动。这是我的表格的一个小轮廓:
**videos**
id
user_id
uploaded
**albums**
id
user_id
created
updated
**comments**
id
user_id
date
当然,表中还有更多字段,还有更多表,但这些字段应足以帮助我构建查询。
现在我要输出的是一个日期,以及具有以下字段的给定活动的ID:
user_id, video_id, album_id, comment_id, date
当然只应选择其中一个ID字段,其余应为空,日期应来自视频的“已上传”,相册的“更新”和评论的“日期”。应该在where语句的查询中选择user_id,以便为给定用户获取活动。
我已经尝试构造这个查询但是失败了,请求COALESCE应该用于选择不同的时间戳,但我无法解决它。
答案 0 :(得分:1)
这样的东西?
(select user_id, id as video_id, NULL as album_id, NULL as comment_id, uploaded as date from videos) UNION (select user_id, NULL, id, NULL, uploaded from albums) UNION (select user_id, NULL, NULL, id, date from comments)
您可以在整个事件之后应用ORDER BY
子句,但WHERE
条件可以放在每个单独的SELECT
的范围内。