我正在尝试使用此链接中的数据库结构编写活动提要如何在社交网络中实现活动流但是我不确定如何编写MySQL命令来检索数据。具体来说,在活动表中,我让type
标识它是哪种活动,source_id
标识该类型活动的主键。我不知道如何使用连接语法从source_id
SELECT
activity.user_id, activity.type, activity.source_id, activity.time, users.username, act1.detail, act2.detail
FROM activity JOIN users JOIN act1
ON activity.user_id = users.uid
AND activity.source_id = act1.sid
WHERE
activity.userTo = :uid
如果我使用上面的命令,我只能获得act1具有source_id的主键的行,而它可能是类型2(act2)。另外,我没有在命令中包含act2。如何编写命令以获得我想要的详细信息?或者我应该用完全不同的方法来做?谢谢!
对于act1
和act2
的连接,我使用了LEFT JOIN,因为source_id
可能是type1或type2,试试这个:
SELECT
activity.user_id,
activity.type,
activity.source_id,
activity.time,
users.username,
act1.detail,
act2.detail
FROM
activity
JOIN users
ON activity.user_id = users.uid
LEFT JOIN act1
ON activity.source_id = act1.sid
LEFT JOIN act2
ON activity.source_id = act2.sid
WHERE
activity.userTo = :uid