合并来自不同表格的数据以形成新闻Feed

时间:2009-11-14 16:58:45

标签: sql database feed

假设我有2个表,消息和产品。每当用户发布新产品或消息时,订阅该特定用户的用户都将更新其订阅源。它类似于Facebook提要。

问题是如何组合来自2个不同表格Message and Product的记录来制作新闻Feed,Feed必须按发布日期排序。

我认为使用纯SQL很难做到,或者我可能需要另一个表并在创建新产品或消息时插入新行?

感谢阅读,希望能在这里得到一些帮助,thnx !!

2 个答案:

答案 0 :(得分:1)

要在SQL中执行此操作,您需要执行表连接。在这种情况下,您希望按用户加入消息和产品。

这是指向编码恐怖页面的链接,这是我见过的联接的最佳解释,A Visual Explanation of SQL Joins

答案 1 :(得分:1)

查找消息产品的常见内容,例如它们都是帖子的类型,因此您可以使用以下内容:

post_model_01

帖子表中包含所有帖子共有的列;消息和产品表只包含特定于每个列的列。


更新

获取消息(2009-11-10 15:00之后更改)

SELECT * 
  FROM Message AS m
  JOIN Post as AS p ON p.PostID = m.PostID
WHERE p.LastChanged > '2009-11-10 15:00'

获取产品(2009-11-10 15:00之后更改)

SELECT * 
  FROM Product AS d
  JOIN Post as AS p ON p.PostID = d.PostID
WHERE p.LastChanged > '2009-11-10 15:00'

在不适用于邮件或产品的列中使用NULLS获取所有一个表。

SELECT * 
  FROM Post AS p
  LEFT JOIN Message AS m p.PostID = m.PostID
  LEFT JOIN Product AS d ON p.PostID = d.PostID
WHERE p.LastChanged > '2009-11-10 15:00'