想创建一个facebook类型的新闻源,它基本上按时间戳列出不同的事件。这些事件位于不同的表中。我有一些代码可以让我按时间戳从不同的表中订购结果集。我的问题是我不知道将不同表的查询结果合并到一个结果集中的正确方法。我觉得UNION可能是这样做的,但是,UNION似乎要求结果集具有相似数量的列,数据类型等,这似乎有点难以实施。
有些帖子建议正确的方法是创建一个单独的新闻源表,但这听起来很麻烦。
这是我到目前为止所拥有的。新闻节目吸引不同的事件,如评论,照片张贴等。 表评论
id|comment|timestamp
照片
id|name|timestamp
$sql = "SELECT p.name,p.timestamp from `photos` p
JOIN
SELECT c.commentc.timestamp from `comments` c
ORDER GREATEST(IFNULL(p.timestamp,0), IFNULL(c.timestamp,0))"
答案 0 :(得分:0)
您可以使用UNION
并在非匹配列的位置使用null
SELECT id, comment, null as name, timestamp FROM comments
UNION
SELECT id, null as comment, name, timestamp FROM photos;
SQLFiddle示例 - http://sqlfiddle.com/#!2/f9f40f/1