我有兩個表用戶和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