Mysql 当一个表中的一列引用另一个表中的三列时,如何连接两个表?

Mysql 当一个表中的一列引用另一个表中的三列时,如何连接两个表?,mysql,sql,join,Mysql,Sql,Join,我有两个表,分别是User和User_activity,它们的结构是 用户 id name email etc.. 用户活动 id, initiator_id, source_id, target_id, activity_code, activity 在这里,我想选择一个用户的所有活动列表(我可以将它们引用到source_id),其中包含启动器、源、目标的所有名称 如何实现这一点?您只需加入三次,在引用用户的三次过程中为每个f使用别名 SELECT sourceUser.name, ta

我有两个表,分别是User和User_activity,它们的结构是

用户

id 
name
email
etc..
用户活动

id,
initiator_id,
source_id,
target_id,
activity_code,
activity
在这里,我想选择一个用户的所有活动列表(我可以将它们引用到source_id),其中包含启动器、源、目标的所有名称


如何实现这一点?

您只需加入三次,在引用用户的三次过程中为每个f使用别名

SELECT sourceUser.name, targetUser.name, initiatorUser.name FROM user_activity
INNER JOIN User as sourceUser on sourceUser.id = user_activity.source_id
INNER JOIN User as targetUser on targetUser.id = user_activity.target_id
INNER JOIN User as initiatorUser on initiatorUser.id = user_activity.initiator_id
WHERE source_id = MyUserIdQueryValue
SELECT
  user_activity.*,
  Initiator.Name   AS InitiatorName,
  Source.Name      AS SourceName,
  Target.Name      AS TargetName
FROM
  user_activity
INNER JOIN
  user             AS Initiator
    ON Initiator.ID = user_activity.initiator_id
INNER JOIN
  user             AS Source
    ON Source.ID    = user_activity.source_id
INNER JOIN
  user             AS Target
    ON Target.ID    = user_activity.target_id

您只需加入三次,在三次引用用户时为每个f使用别名

SELECT
  user_activity.*,
  Initiator.Name   AS InitiatorName,
  Source.Name      AS SourceName,
  Target.Name      AS TargetName
FROM
  user_activity
INNER JOIN
  user             AS Initiator
    ON Initiator.ID = user_activity.initiator_id
INNER JOIN
  user             AS Source
    ON Source.ID    = user_activity.source_id
INNER JOIN
  user             AS Target
    ON Target.ID    = user_activity.target_id

请下层选民详细说明原因,以便我能够解决您的担忧?请下层选民详细说明原因,以便我能够解决您的担忧?