Mysql 用于用户活动或单选查询的单个表

Mysql 用于用户活动或单选查询的单个表,mysql,social-networking,Mysql,Social Networking,我正在为我的客户创建一个社交网络,他们需要像facebook一样的墙和用户最近的活动 我有大约8张表格,上面写着用户帐户、信息、组、评论、页面、照片库、喜欢、共享 在用户配置文件中,他们需要用户在站点中的全部活动 我可以使用一个“强>连接查询< /强>或者需要有一个单独的表作为ReuncActudio./P>< P>您可以考虑创建一个包含其最近活动记录的日志或活动> /Cord>表。这样,您只需要一个查询。您可以根据活动类型连接其他表。您可以使用联合查询从不同的表中提取数据并存储在视图中。这是总

我正在为我的客户创建一个社交网络,他们需要像facebook一样的墙和用户最近的活动

我有大约8张表格,上面写着用户帐户、信息、组、评论、页面、照片库、喜欢、共享

用户配置文件中
,他们需要用户在站点中的全部活动


我可以使用一个“强>连接查询< /强>或者需要有一个<强>单独的表作为ReuncActudio./P>< P>您可以考虑创建一个包含其最近活动记录的<代码>日志<代码>或<代码>活动> /Cord>表。这样,您只需要一个查询。您可以根据活动类型连接其他表。

您可以使用联合查询从不同的表中提取数据并存储在视图中。这是总的想法

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>
a.id=b.user\u id上的用户a加入v\u最近的活动b,其中a.id=和b.action\u日期介于和之间

显示您正在进行的加入类型我还没有开始我在问用户,我该怎么做?这完全取决于表之间的关系。我认为此视图不起作用,因为我需要实时视图。视图是实时的。它们本质上是“存储查询”,可以作为表访问。他们总是对实时数据进行操作。如果需要动态创建查询以包括/排除某些表,您仍然可以使用视图并更改where
action=