SQL Server:如何从只有ID的联结表中获取数据?

mrc*_*son 1 sql sql-server join junction-table

我有三张桌子(这里有例子).两个有数据,一个是连接表来处理很多:很多关系.

用户:

ID | UserName
====================
1  | Jeremy Coulson
2  | Someone Else
Run Code Online (Sandbox Code Playgroud)

存储库:

ID | RepositoryURI
====================
1  | http://something
2  | http://another
Run Code Online (Sandbox Code Playgroud)

存储库用户:

ID | UserID | RepositoryID
==========================
1  | 1      | 1
2  | 2      | 2
Run Code Online (Sandbox Code Playgroud)

因此,在此示例中,用户1与存储库1相关联.用户2与存储库2相关联.我现在需要搜索Repositories.RepositoryURI并返回Users.UserName.

我有这个问题:

select UserName 
from RepositoriesUsers 
join Users on Users.ID = RepositoriesUsers.UserID
join Repositories on Repositories.RepositoryURI = 'http://another';
Run Code Online (Sandbox Code Playgroud)

但是,它返回表中的每一行RepositroriesUsers.

如何将联结表与ID和其他表之间的数据与人性化文本进行匹配?

Lam*_*mak 7

你实际上并没有为你的第二个提供正确的连接条件INNER JOIN.它应该是:

SELECT U.UserName 
FROM RepositoriesUsers RU
INNER JOIN Users U 
    ON U.ID = RU.UserID
INNER JOIN Repositories R 
    ON RU.RepositoryID = R.ID
WHERE R.RepositoryURI = 'http://another';
Run Code Online (Sandbox Code Playgroud)

此外,为了清楚起见,您应该尝试在查询中使用表别名.