存储过程中的SQL complex select语句

时间:2013-05-17 11:46:27

标签: sql sql-server select stored-procedures join

我的数据库中有3个表;

InfoTable,
FriendTable,
UsersTable

这些是他们的专栏:

InfoTable

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

FriendTable

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

UsersTable

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 个答案:

答案 0 :(得分: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

的好文章

答案 1 :(得分: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')。

答案 2 :(得分: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 Click Here

的知识

希望它有效。

答案 3 :(得分: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')