2017-06-15 132 views
0

我有兩個表,稱爲請求和請求關係,詳情如下。將多個結果合併到一個列表中

要求

reqId regNum desc 
12  111 Tomato 
13  112 Carrot 
14  113 Chilli 
15  114 Onion 
16  115 Garlic 

requestRelationship

reqID relatedRequestId 
12  14 
12  16 
13  14 
13  15 

什麼,我想顯示類似下面的信息

reqId regNum desc relateRequest 
12  111 Tomato 113,115 
13  112 Carrot 113,114 

目前我只有基本的曲ERY

select r.reqId, r.reqNum, r.desc, relateRequest = STUFF((select Distinct ', ' + regNum from request b where b.reqId = a.reqId FOR XML PATH (' ')), 1, 2, '') 
from request r 
INNER JOIN requestRelationship t WITH (NOLOCK) on r.reqID = t.reqID 
order by r.reqId desc 

回答

1

STUFF基本需要加入您的request表上relatedrequestid(而你的外部查詢是在reqID加盟),所以你的整個選擇應該是這個樣子:

SELECT DISTINCT R.reqID, R.regNum, R.[desc], 
     relateRequest = STUFF(
      (SELECT DISTINCT ', ' + CAST(R2.regNum AS VARCHAR(10)) 
      FROM request AS R2 
      JOIN requestRelationship AS RR2 
       ON RR2.relatedrequestid = R2.reqID 
      WHERE RR2.ReqID = RR.ReqID -- This joins to your outer query. -- You can also join on R.ReqID, doesn't make a difference. 
      FOR XML PATH ('')), 1, 2, '') 
FROM request AS R 
JOIN requestRelationship AS RR 
    ON RR.reqID = R.reqID; 
+0

真棒。謝謝 – Supermode

+0

我只是想知道,如果我可以顯示超過2個相關請求或更多 – Supermode

+0

@Supermode,你是什麼意思超過2?除非我誤解了你所要求的內容,否則這在理論上應該顯示與請求關係表中的許多獨特的regnum相同的特徵。 – ZLK

相關問題