我正在尝试为用户的个人资料页面创建最近的活动部分。 在这个例子中,我有3个表。
一个是用户的表
+-------------+--------------+-------------+
: user_id : username : join_date :
+-------------+--------------+-------------+
: 1 : myacct : 2018-01-02 :
+-------------+--------------+-------------+
: 2 : johndoe : 2018-01-05 :
+-------------+--------------+-------------+
其次是blog_post表
+-------------+--------------+-------------+-----------+-----------+
: id : author_id : title : content : post_date :
+-------------+--------------+-------------+-----------+-----------+
: 1 : 2 : Some stuff : I like... : 2018-01-05:
+-------------+--------------+-------------+-----------+-----------+
: 2 : 1 : My Title : This i... : 2018-01-04:
+-------------+--------------+-------------+-----------+-----------+
第三是回复
+-------------+--------------+-------------+-----------+-----------+
: id : auth_id : headline : content : rep_date :
+-------------+--------------+-------------+-----------+-----------+
: 1 : 1 : thanks : Nice p... : 2018-01-04:
+-------------+--------------+-------------+-----------+-----------+
我想要做的是从blog_posts.title列中获取all,并从replies.headline列中获取所有内容(将结果分组),其中author_id和auth_id对应于user_id。然后我想按日期降序排序。请注意,blog_posts和回复表的日期列的命名方式不同(因为它们在我的实际情况中)。然后,我想将结果限制为3(因此原因是它"最近的"活动)。
我尝试过使用UNION ALL取得了一些成功。虽然它将一个表中的所有内容分组,但随后会跟随其他表。另外,我对使用while循环和fetch_object()函数
在PHP中获取它感到困惑答案 0 :(得分:0)
尝试这样的事情......
SET ROWCOUNT 3
select username, title, post_date, type
from
(
select username, title, post_date, 'blog post' as "type"
from blog_post b
join users u on u.user_id = b.author_id
union all
select username, headline as "title", rep_date as "post_date", 'reply' as "type"
from replies r
join users u on u.user_id = r.auth_id
) as FullQuery
order by post_date desc