简体   繁体   English

加入两个相同的外键

[英]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 .其中AssignedByAssignedUser是表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 ?如何在同时获得AssignedByAssignedUser的情况下进行内部联接? The following gives me one of them but how can I get both?以下给了我其中之一,但我怎样才能得到两者? By the way AssignedBy and AssignedUser are two different Users .顺便说一下, AssignedByAssignedUser是两个不同的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM