[英]Join on two of the same foreign keys
I have this table below我在下面有这张表
Table Assignments
AssignmentID: int
LinkedTo: varchar(50)
AssignedUser: int
AssignedBy: int
where AssignedBy
and AssignedUser
are foreign keys from the table Users
.其中AssignedBy
和AssignedUser
是表Users
中的外键。 Here is what Users
looks like这是Users
的样子
UserKey:int
Username:varchar(50)
How can I do an inner join where I get both AssignedBy
and AssignedUser
?如何在同时获得AssignedBy
和AssignedUser
的情况下进行内部联接? The following gives me one of them but how can I get both?以下给了我其中之一,但我怎样才能得到两者? By the way AssignedBy
and AssignedUser
are two different Users
.顺便说一下, AssignedBy
和AssignedUser
是两个不同的Users
。 I'm trying to get Users.Username
我正在尝试获取Users.Username
select Users.Username
from Assignments
INNER JOIN Users ON Assignments.UserKey = Users.UserKey
If you want both user names on one row, you have to join Users
twice, like如果您希望两个用户名都在一行,则必须加入Users
两次,例如
SELECT UA.Username AS AssignedUserName, UB.Username AS AssignedByUserName
FROM Assignments A
INNER JOIN Users UA ON A.AssignedUser = UA.UserKey
INNER JOIN Users UB ON A.AssignedBy = UB.UserKey;
If your goal is to have all user names regardless wether it comes from AssignedUser
or from AssignedBy
, you have to use UNION
如果您的目标是拥有所有用户名,无论它来自AssignedUser
还是来自AssignedBy
,您必须使用UNION
SELECT U.Username
FROM Assignments A
INNER JOIN Users U ON A.AssignedUser = U.UserKey
UNION SELECT U.Username
FROM Assignments A
INNER JOIN Users U ON A.AssignedBy = U.UserKey;
Note however that this will remove duplicate user names.但是请注意,这将删除重复的用户名。 If you want to keep duplicates, use UNION ALL
.如果要保留重复项,请使用UNION ALL
。
You need two joins:您需要两个连接:
SELECT assigned.username AS assigned_username
assigned_by.username AS assigned_by_username
FROM assignments a
JOIN users assigned ON a.assigneduser = assigned.userkey
JOIN users assigned_by ON a.assignedby = assigned_by.userkey
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.