2011-12-05 45 views

回答

4

您只需加入三次,使用别名按照每个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 
+0

请可以在向下选民解释为何,让我可以解决您的担忧? – MatBailie

0
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 
0
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; 
相关问题