2013-05-17 56 views
1

我在我的數據庫中有3個表;存儲過程中的SQL複雜選擇語句

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表中。 如何在一個完整的查詢中實現這一點?

回答

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 [email protected] 
friend.status='true' 

這裏是JOIN

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 [email protected] and frnd.status='true')。

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 [email protected] and 
f.status='true'; 

我在這裏選擇的所有表的價值,你可以按照你自己的需要進行選擇。

對於知識有關joinsClick Here

希望工程。

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')