我有三个表用于存储活动相关数据,如下所示。
Table: activity +----+---------------+---------+ | id | activity_text | user_id | +----+---------------+---------+ | 1 | added | 1 | | 2 | added | 1 | +----+---------------+---------+
Table: activity_modules +----+-------------+ | id | module_name | +----+-------------+ | 1 | posts | | 2 | comments | | 3 | users | +----+-------------+
Table: activity_module_objects +----+-------------+-----------+--------------+-----------+ | id | activity_id | module_id | display_text | object_id | +----+-------------+-----------+--------------+-----------+ | 1 | 1 | 1 | new post | 10 | | 2 | 2 | 1 | new comment | 11 | | 3 | 2 | 2 | on post | 10 | +----+-------------+-----------+--------------+-----------+
此处活动表表示用户和活动。 user_id是来自users表的外键 activity_module_objects中的object_id表示活动目标,如id为10的帖子。这意味着在10后发生了一些操作。
我需要这样的输出,每当我使用user_id查询时,可以说user_id = 1,{user:{id:1,name:' Anil'}}
Anil添加了新帖子
Anil在帖子上添加了新评论
在每项活动中,' Anil','评论''发布'会有链接。
Anil喜欢AnotherUser的视频野生生活
在此活动中,Anil,AnotherUser,Wild-life将有链接。因此,使用user_id我需要使用module_id&获取用户详细信息。 object_id我需要获取对象详细信息。就像模块是' VIDEO'一样,我需要从videos
表中获取video_id(来自activity_module_objects表的object_id)数据。如果是其他事情,例如,事件,我需要从events
表中获取event_id详细信息。
答案 0 :(得分:0)
如果我理解正确,它将为您提供相关object_id和模块名称的用户详细信息。
SELECT u.*,
amo.object_id,
am.module_name
FROM USER u
LEFT JOIN activity a ON a.user_id = u.id
INNER JOIN activity_modules_object amo ON a.id = amo.activity_id
INNER JOIN activity_modules am ON am.id = amo.module_id