2017-06-13 33 views
0

選擇**您好, 我有3個表:從多個表

users  
certification  
project 

我需要爲用戶ECH選擇認證的名單和項目的類的列表:

-------------------------------------------------------------------- 
userid | fullname | list of certification | list of project 
-------------------------------------------------------------------- 
1  | xX  | ITIL ,Cisco,..   | PROj 1 ,Proj 2 ... 

我試試這個**

select users.fullname,users.team,users.jobtitle,certif= STUFF(
     (SELECT ','+ certifiacte 
     FROM dbo.certification a 
     INNER JOIN dbo.Users ar ON ar.UserId = a.UserId 

     FOR XML PATH('')), 1, 1, ''),porj= STUFF(
     (SELECT ','+ project 
     FROM dbo.project a 
     INNER JOIN dbo.Users ar ON ar.UserId = a.UserId 

     FOR XML PATH('')), 1, 1, '') 
from Users 

但問題是我得到的所有證書和項目保存在數據庫中的列表在所有的行中。但我需要爲每個用戶列出與他有關的項目和認證信息。

回答

0

任何時候發生這種情況都意味着你不相關。您的子查詢與您的外部查詢無關。

你需要做這個:

select ar.fullname,ar.team,ar.jobtitle,certif= STUFF(
     (SELECT ','+ certifiacte 
     FROM dbo.certification a 
     WHERE ar.UserId = a.UserId  
     FOR XML PATH('')), 1, 1, ''),porj= STUFF(
     (SELECT ','+ project 
     FROM dbo.project a 
     WHERE ar.UserId = a.UserId 
     FOR XML PATH('')), 1, 1, '') 
from Users ar 
+0

感謝標籤Alleman – marwen