我正在建立一个社交网络页面,并希望在提要页面上获得所有用户的活动。

我有一个评论表:

user_id    comment                date
1          "Hi...."               24 March 2013
2          "Hello..."             25 March 2013
1          "Another comment..."   26 March 2013


和喜欢表:

user_id    id_of_liked_item     date
1          101                  24 March 2013
1          145                  25 March 2013


是否可以执行单个查询,以按日期将这些查询放入所有用户活动的数组中?如果是这样,该查询看起来会怎么样?我的数组需要看起来像这样:

$activity = array(
    array(
        "type"=>"comment",
        "content"=>"Comment goes here"
    ),
    array(
        "type"=>"like",
        "item_id"=>345,
    )
)


我非常擅长处理php数据,因此我可能不需要太多帮助来组织数组,但是我的问题主要是首先如何从数据库中获取数据。谢谢

最佳答案

是的,UNION是必经之路:

SELECT 'comment' AS Type, Comment AS Content, NULL as Item_ID, Date
  FROM Comments
  WHERE User_Id = 1
UNION ALL SELECT 'like', NULL, id_of_liked_item, Date
  FROM Likes
  WHERE User_Id = 1


这将为您提供一个如下所示的结果集:

Type    Content            Item_ID Date
------- ------------------ ------- -------------
comment Hi....             null    24 March 2013
comment Another comment... null    26 March 2013
like    null               101     24 March 2013
like    null               145     25 March 2013


您可以从那里拿走它。

07-24 09:51
查看更多