SQL 服务器:如何从只有 ID 的联结点 table 获取数据?
SQL Server: How can I get data from junction table that only has IDs?
我有三个 table(此处为示例)。两个带有数据,一个是连接 table 以处理 many:many 关系。
用户:
ID | UserName
====================
1 | Jeremy Coulson
2 | Someone Else
存储库:
ID | RepositoryURI
====================
1 | http://something
2 | http://another
存储库用户:
ID | UserID | RepositoryID
==========================
1 | 1 | 1
2 | 2 | 2
因此,在此示例中,用户 1 与存储库 1 关联。用户 2 与存储库 2 关联。我现在需要按 Repositories.RepositoryURI
和 return Users.UserName
进行搜索。
我有这个查询:
select UserName
from RepositoriesUsers
join Users on Users.ID = RepositoriesUsers.UserID
join Repositories on Repositories.RepositoryURI = 'http://another';
但是 return 是 RepositroriesUsers
table 中的每一行。
如何匹配带有 ID 的联结点 table 和带有人性化文本的其他 table 之间的数据?
您实际上并没有为第二个 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';
此外,为了清楚起见,您应该尝试在查询中使用 table 别名。
请更改 Repositories 的加入条件 table 并添加如下 WHERE 子句
select *
from RepositoriesUsers
join Users on Users.ID = RepositoriesUsers.UserID
join Repositories on Repositories.ID = RepositoriesUsers.RepositoryID
where RepositoryURI = 'http://another'
我认为您的加入需要一个简单的更正:
select UserName
from RepositoriesUsers
join Users on Users.ID = RepositoriesUsers.UserID
join Repositories on Repositories.ID = RepositoriesUsers.RepositoryID
where Repositories.RepositoryURI = 'http://another';
我有三个 table(此处为示例)。两个带有数据,一个是连接 table 以处理 many:many 关系。
用户:
ID | UserName
====================
1 | Jeremy Coulson
2 | Someone Else
存储库:
ID | RepositoryURI
====================
1 | http://something
2 | http://another
存储库用户:
ID | UserID | RepositoryID
==========================
1 | 1 | 1
2 | 2 | 2
因此,在此示例中,用户 1 与存储库 1 关联。用户 2 与存储库 2 关联。我现在需要按 Repositories.RepositoryURI
和 return Users.UserName
进行搜索。
我有这个查询:
select UserName
from RepositoriesUsers
join Users on Users.ID = RepositoriesUsers.UserID
join Repositories on Repositories.RepositoryURI = 'http://another';
但是 return 是 RepositroriesUsers
table 中的每一行。
如何匹配带有 ID 的联结点 table 和带有人性化文本的其他 table 之间的数据?
您实际上并没有为第二个 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';
此外,为了清楚起见,您应该尝试在查询中使用 table 别名。
请更改 Repositories 的加入条件 table 并添加如下 WHERE 子句
select *
from RepositoriesUsers
join Users on Users.ID = RepositoriesUsers.UserID
join Repositories on Repositories.ID = RepositoriesUsers.RepositoryID
where RepositoryURI = 'http://another'
我认为您的加入需要一个简单的更正:
select UserName
from RepositoriesUsers
join Users on Users.ID = RepositoriesUsers.UserID
join Repositories on Repositories.ID = RepositoriesUsers.RepositoryID
where Repositories.RepositoryURI = 'http://another';