我可以使用一个select语句从FK中的两个表中获取多行

时间:2014-08-11 23:36:24

标签: sql sql-server

我想从Players表中选择* FriendID = PlayerID。问题是1个玩家可以有很多朋友,所以我可以在Friends表中有多行,其中PlayerID相同但FriendID不同。 FriendID也是Players表中PlayerID字段的FK。

我可以通过2个单独的查询来完成此操作。首先,我从朋友那里选择FriendID,其中PlayerID = ID,然后我可以循环浏览所有FriendID的返回选择*来自玩家,其中PlayerID = FriendID。看起来这应该更容易,并且是维持FK关系的一部分?我是否必须通过2个单独的查询来执行此操作,或者我错过了什么?

以下是朋友中的表格FriendID是Players中玩家ID上的FK

[Players]
PlayerID
Name
Email

[Friends]
PlayerID
FriendID

更新

以下是一些数据和预期结果。

Friends
PlayerID = 6, FriendID = 9
PlayerID = 6, FriendID = 11

Players
PlayerID = 9, Email = bl@bl.c, Name = Pedro
PlayerID = 11, Email = ca@ca.ca, Name = Marcus

结果将通过查询Friends表获取上面列出的所有数据。基本上从玩家ID = 6的朋友中选择*然后选择玩家ID = 9和11的玩家*希望这更有意义......

1 个答案:

答案 0 :(得分:0)

这是你要找的东西吗?

DECLARE @id int = 777

SELECT Players.*
FROM Players
JOIN Friends
ON Friends.FriendID = Players.PlayerID
WHERE Friends.PlayerID = @id

这应该获取有关与Friends表中的PlayerID相关联的所有FriendID的所有玩家信息。