MySQL在多个表上获取最新事件

时间:2011-04-08 07:46:49

标签: mysql

这可能是不可能的,但如果是的话会非常棒。我有以下基本表结构:

groups
 group_id
 other_stuff

users
 user_id
 other_stuff

users_to_groups
 user_id
 group_id
 other_stuff

events
 event_id
 group_id (where the event belongs)
 other_stuff

事件实际上是用户可以在网站上执行的各种操作的一组表。

我希望能够对表执行查询并让它返回如下结果:

event_type        event_id               info_columns ...

 user_join     user_to_group_id
 photo_upload    photo_id
 comment        comment_id

其中event_type列中的值将是查询根据源内容的表名生成的值。

我知道我可以使用多个查询然后在PHP中将它们拼凑在一起,但我想也许有一种方法可以完全在MySQL中完成。这样的事情甚至可能吗?如果是这样,实现它的基本步骤是什么?

1 个答案:

答案 0 :(得分:0)

如果您有多个select语句,并且每个语句都获得了所需的数据,那么您当然可以加入它们。

其他人提出了类似的问题,mysql-join-most-recent-matching-record-from-one-table-to-another

现在,鉴于你只是要求最新的活动。您的伪代码

select <userinfo>
from users
  join groups
    on user=group
  join (select lastest event by group
        from events
       ) as tmp
    on group=tmp

通过这种方式,您可以执行1次查询,将该工作交给数据库