1

我的数据库中有 3 个表;

InfoTable,
FriendTable,
UsersTable

这些是他们的专栏:

信息表

Uid int,
Username varchar(256),
Address varchar(256),

朋友表

Fid int,
UserName varchar(256),
FriendUserName varchar(256),
Status varchar(10)---Default value:'false'

用户表

Uid int,
FirstName varchar(256),
LastName varchar(256),
Username varchar(256)

我必须获得该用户名的朋友的所有信息。我正在使用这个查询,

SELECT * 
FROM InfoTable 
WHERE username IN 
     (SELECT FriendUserName  
      FROM FriendTable  
      WHERE username = @UserName AND status='true') 

现在我必须在同一个查询中从 users 表中添加他/她的 FirstName 和 LastName。如何在一个完整的查询中实现这一目标?

4

4 回答 4

0
SELECT friend.*
from InfoTable info 
inner join FriendTable friend on info.username=friend.FriendUserName
--inner join UsersTable user1 on info.Uid=user1.Uid 
--(In case you want columns from UsersTable)
where info.username=@UserName 
friend.status='true'

这是JOIN的好文章

于 2013-05-17T12:11:42.427 回答
0
SELECT info.*, frnd.*, usr.*
from InfoTable info
INNER join FriendTable frnd on frnd.FriendUserName = info.username
INNER join usersTable usr on usr.Uid=info.Uid

这将为您提供所有表格的所有详细信息。您可以在上述查询中添加您的条件,例如 ( and frnd.username=@UserName and frnd.status='true')。

于 2013-05-17T12:12:55.403 回答
0

尝试这个

SELECT it.*, ut.FirstName, ut.LastName
FROM InfoTable it
     LEFT OUTER JOIN UsersTable ut
          ON it.Uid = ut.Uid
WHERE it.username IN 
     (SELECT FriendUserName  
      FROM FriendTable  
      WHERE username = @UserName AND status='true')
于 2013-12-19T06:08:01.473 回答
0

您只需要创建一个join查询

select i.*,f.*,u.* from infitable as i  join friendtable as f
on i.username = f.friendusername join usertable as u on i.uid = u.uid
where i.username=@UserName and
f.status='true';

在这里,我选择所有表格值,您可以根据自己的需要选择。

了解有关joins 点击这里

希望它有效。

于 2013-05-17T12:18:12.590 回答