想要创建一个Facebook类型的新闻源,该新闻源基本上按时间戳记列出不同的事件。这些事件驻留在不同的表中。我有一些代码可以让我从不同的表中按时间戳排序结果集。我的问题是我不知道将不同表的查询结果合并为一个结果集的正确方法。我感觉UNION可能是这样做的方式,但是,UNION似乎要求结果集具有相似数量的列,数据类型等,这似乎很难执行。

一些帖子建议执行此操作的正确方法是创建一个单独的新闻源表,但这听起来很麻烦。

这是我到目前为止所拥有的。 Newsfeed绘制不同的事件,例如评论,发布的照片​​等。
表注释

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))"

最佳答案

您可以使用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

关于php - php/mysql:facebook样式新闻提要架构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20462496/

10-13 08:54