2017-09-05 131 views
0

在我的情況下,我在Microsoft SQL Server 2012數據庫中有USER表和POST表。SQL查詢水平記錄

[用戶表]與帖子ID

uid  name  postId 
-------------------------- 
1  John  1 
2  Peter  2 
3  Susan  2 
4  Ben   3 
5  Ken   4 
6  Mary  5 

[PostTable]

postId postTitle managerPostId 
------------------------------------- 
1  AO   2 
2  SSM   3 
3  CSM   [null] 
4  AP   5 
5  SA   6 
6  PM   [null] 

,這是我預期的結果

uid name postTitle manager1 mgrPostTitle1 manager2 mgrPostTitle2 
---------------------------------------------------------------------------------------- 
1 John AO   Peter  SSM    Susan  SSM 
2 Peter SSM   Ben   CSM    [null]  [null] 
3 Susan SSM   Ben   CSM    [null]  [null] 
4 Ben  CSM   [null]  [null]   [null]  [null] 
5 Ken  AP   Mary  SA    [null]  [null] 
6 Mary SA   [null]  [null]   [null]  [null] 

我怎樣才能實現這個結果?我試過Pivot,但我不知道動態postId;

THANKS

回答

0

嘗試使用若干個連接,像這樣:

select u.uid, u.name, p.postTitle, u2.name as manager1, p2.posttitle as mgrPostTitle1, u3.name as manager2, p3.posttitle as mgrPostTitle2 
from User u 
Inner join post p on p.postid = u.postid 
left join user u2 on u2.uid = p.managerpostid 
left join post p2 on p2.postid = u2.postid 
left join user u3 on u3.uid = p2.managerpostid 
left join post p3 on p3.postid = u3.postid