从两个不同的表中提取信息并将它们合并到新闻源中

时间:2013-05-17 18:20:11

标签: php mysql sorting news-feed

我有两个不同结构的不同表。当用户执行操作A时,对于操作将一行插入到表A中,对于表B也是如此。当用户执行操作B时,一行将插入到表B中。

现在我有一个新闻Feed,我想向其他朋友展示这些动作。如何使用MySQL查询具有不同结构的两个表,然后使用PHP以按时间排序的方式构造更新帖子?

就像在Facebook中一样,关于他的关系状态的用户更新与他发布的帖子不同并附上照片但它们都出现在同一个新闻源中,尽管它们的结构和它们携带的数据类型不同。如果有人能够对此有所了解并讨论可能的解决方案,我将不胜感激。

1 个答案:

答案 0 :(得分:1)

一般方法是这样的:

SELECT
  'A' AS ActionType,
  ActionA_PK AS ActionPK,
  ActionA_Date AS ActionDate,
  <a description of action A> AS ActionDesc
FROM ActionA
UNION SELECT
  'B',
  ActionB_PK,
  ActionB_Date,
  <a description of action B>
FROM ActionB
ORDER BY ActionDate DESC

将不同的操作折叠在一起并按日期排序,最新的第一个。您可以在前端显示它们,并且因为您有他们的类型(AB)和他们的主键,当他们的链接或按钮或点击的任何内容发回来进行处理时,您可以识别它们

SQLFiddle example here

另一个SQLFiddle example here解释了表格如何不需要具有相同的结构来使其工作。