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和其他表之间的数据与人性化文本进行匹配?
你实际上并没有为你的第二个提供正确的连接条件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)
此外,为了清楚起见,您应该尝试在查询中使用表别名.