【问题标题】:Combining data from different tables to form a news feed组合来自不同表的数据以形成新闻提要
【发布时间】:2018-10-21 14:36:03
【问题描述】:

假设我有 2 个表,Message 和 Product。每当用户发布新产品或消息时,订阅该特定用户的用户都会更新他们的提要。这类似于 Facebook 提要。

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

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

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

【问题讨论】:

    标签: sql database feed


    【解决方案1】:

    找到 messageproduct 的共同点,例如它们都是 post 的类型,所以你可以有类似的东西:



    帖子表具有所有帖子共有的列; message 和 product 表只有每个特定的列。


    更新

    获取消息(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'
    

    【讨论】:

    • 这叫继承吗?根据上面的模型,用什么sql语句来获取最近的帖子?再次感谢您的帮助!
    • 这与 SQL 中的继承一样接近;称为超类型/子类型。
    【解决方案2】:

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

    这里是一个关于 Coding Horror 页面的链接,这是我所见过的对连接的最佳解释,A Visual Explanation of SQL Joins

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-08
      • 2019-01-15
      • 2018-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多