0

我正在尝试使用此链接中的数据库结构编写活动提要 如何在社交网络中实现活动流 但我不确定如何编写用于检索数据的 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 。应该如何编写命令以获取我想要的详细信息?还是我应该以完全不同的方式来做?谢谢!

4

1 回答 1

0

对于加入act1act2我使用了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
于 2013-06-10T07:06:36.207 回答