我的脚本中有一些表,我需要从所有表中创建时间轴。主要表格是"帖子" - "喜欢" - "评论"。
帖子表有行:PID - UID - 标题 - time_added
喜欢表有行:LID - PID - UID - time_added
注释表有行:CID - PID - UID - time_added
users表有行:UID - 用户名。
我在用户中创建了一个页面'名为:"时间轴"。它应该显示按时间排序的用户操作。 UID指的是用户ID。
浏览该页面时的数据示例:
我想创建一个新的MySQL表:user_timeline有行:
TID - UID - PID - LID - CID
在每个动作(Post,Like,Comment)之后,根据动作在该表中插入新行,并在相应的字段中添加动作ID,并将其他行保留为空。如果可能的话,然后将它们与相关表格结合起来。
答案 0 :(得分:2)
你可以使用UNION和别名:
select * from ((select 1 as type,time_added from posts where ...) union (select 2 as type,time_added from likes where ...) ...) order by time_added asc
注意:列选择必须与列类型具有相同的顺序。
不要这样做:
(select 1 as type,time_added from posts where ...) union (select time_added,2 as type from likes where ...)
或者,如果您不在子查询中选择相同数量的列:
SQLSTATE[21000]: Cardinality violation: 1222 The used SELECT statements have a different number of columns
您的结果集将是一个多维数组,如下所示:
array(array('type'=>1,'time_added'=>'...'),array('type'=>2,'time_added'=>'...'));
通过 TYPE ,您知道它是帖子还是其他类似 希望这有帮助