问题描述
|
我正在为我的客户创建一个社交网络,他们需要像Facebook这样的墙和用户最近的活动。
我大约有8张表说用户帐户,信息,组,评论,页面,相册,喜欢,分享。
在“ 0”中,他们需要用户在网站中的全部活动。
我可以使用一个联接查询还是需要一个单独的表作为最近的活动。
解决方法
您可以有一个联合查询以从不同的表中提取数据并存储在视图中。这是总体思路...
create view \'v_recent_activity\' as
select user_id,\'comment\' as action,comment_text as action_info,comment_date as action_date from comments
union
select user_id,\'photo\' as action,photo_url as action_info,photo_date as action_date from photos
union
select user_id,\'page\' as action,page_url as action_info,comment_date as action_date from pages
union
select user_id,\'likes\' as action,like_info as action_info,comment_date as action_date from likes
union
select user_id,\'shares\' as action,share_info as action_info,share_date as action_date from shares
然后您可以通过类似的方式访问它
Select * from v_recent_activity where action_date between <begin_date> and <end_date>
或加入
Select a.*,b.* from users a join v_recent_activity b on a.id = b.user_id where a.id = <user_id> and b.action_date between <begin_date> and <end_date>
,您可以考虑创建一个包含其近期活动记录的log
或ѭ5record表。这样,您只需要一个查询。您将根据活动类型联接其他表。