Sql将id与来自与另一个表匹配的表中的名称匹配

时间:2017-03-25 18:26:09

标签: sql sql-server

我有一个表friend,它有两列Id,属于特定的用户名。见例:

Friend table

Id_Gebruiker是用户,Id_Gebruiker2是该用户的朋友。

friend具有属于表user的ID。

然后该表user具有到表client的外键(列Id_Client)(引用Id_Client列)。 client表包含用户名。

现在我想获得属于Friend表包含的Id的相应用户名。到目前为止,当我只使用两个表时,我才能使用它,但我无法使用三个表。

User and client table

2 个答案:

答案 0 :(得分:0)

这样的东西?

select f.Id_Gebruiker, f.Id_Gebruiker2, u.Id_Client, c.Gebruikersnaam
from friend f 
join [user] u on f.Id_Gebruiker2 = u.Id
join client c on u.id_client = c.id

编辑假设用户的名称位于同一个表格中(client),并且每个friend.Id_Gebruiker都对应client.Id(因此存在FK关系),您可以通过额外的连接找到这两个名称:

select c.Gebruikersnaam as UserName, c2.Gebruikersnaam as FriendName
from friend f
join client c on f.Id_Gebruiker = c.Id
join [user] u on f.Id_Gebruiker2 = u.Id
join client c2 on u.id_client = c2.id

答案 1 :(得分:0)

以下是另一个答案,您可以在http://sqlfiddle.com/#!3/2b9dd/1查看并验证。

在friends表中获取userid和friendid名称的主要查询如下:

<!--