我有两个表用户和User_activity和他们的结构,如何连接两个表,其中一个表中的一列是指其他表中的3列?
用户
id
name
email
etc..
user_activity
id,
initiator_id,
source_id,
target_id,
activity_code,
activity
在这里,我要选择的所有活动列表为一个用户(我可以引用他们source_id)的所有名称的发起人,来源,目标..
如何获得?
我有两个表用户和User_activity和他们的结构,如何连接两个表,其中一个表中的一列是指其他表中的3列?
用户
id
name
email
etc..
user_activity
id,
initiator_id,
source_id,
target_id,
activity_code,
activity
在这里,我要选择的所有活动列表为一个用户(我可以引用他们source_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
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 DT1.*, U.name
FROM (
SELECT source_id, activity_code, activity
FROM user_activity
UNION
SELECT target_id AS source_id, activity_code, activity
FROM user_activity
UNION
SELECT inititator_id AS source_id, activity_code, activity
FROM user_activity
) DT1
JOIN User U ON DT1.source_id = U.id;
请可以在向下选民解释为何,让我可以解决您的担忧? – MatBailie