php/mysql:facebook风格的新闻提要体系结构

php/mysql:facebook风格的新闻提要体系结构,php,mysql,feed,Php,Mysql,Feed,想要创建一个facebook类型的新闻提要,它基本上按时间戳列出不同的事件。这些事件位于不同的表中。我有一些代码可以让我从不同的表中按时间戳排序结果集。我的问题是,我不知道如何将不同表的查询结果组合到一个结果集中。我有一种感觉,UNION可能是实现这一点的方法,然而,UNION似乎要求结果集具有相似数量的列、数据类型等,这似乎有点难以实施 一些帖子建议这样做的正确方法是将一个单独的newsfeed表装箱,但这听起来很麻烦 这就是我目前所拥有的。Newsfeed绘制不同的事件,如评论、照片发布等。

想要创建一个facebook类型的新闻提要,它基本上按时间戳列出不同的事件。这些事件位于不同的表中。我有一些代码可以让我从不同的表中按时间戳排序结果集。我的问题是,我不知道如何将不同表的查询结果组合到一个结果集中。我有一种感觉,UNION可能是实现这一点的方法,然而,UNION似乎要求结果集具有相似数量的列、数据类型等,这似乎有点难以实施

一些帖子建议这样做的正确方法是将一个单独的newsfeed表装箱,但这听起来很麻烦

这就是我目前所拥有的。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;

SQLFIDLE示例-

Huh。太棒了。从未意识到这是可以做到的。通常,我会对另一个表使用外部联接的一些变体。因此,可能需要为每种类型的内容创建一个包含记录的内容表,然后将其外部连接到注释和照片,并将内容id指向它。不过,您的方法的一个问题是photos.id和comments.id之间可能存在关键冲突