2013-06-18 78 views
-2

我有三個表,如下所述。TSQL - 從一個表合併到另一個表中單行

tblNews

NewsId | Title  | 
====================== 
1  | Hello World | 

tblSectionItems

rID | SectionID | NewsID  | 
================================= 
1 | 1  | 1   | 
2 | 2  | 1   | 

tblSections

SectionId | SectionName | 
=================================== 
1   | Economy  | 
2   | Politics | 

我怎麼會去一個回合,並有一個單一的查詢輸出如下?或者甚至更好我如何用Linq-EF做到這一點?

| NewsID | Title  | SectionNames 
===================================== 
| 1  | Hello World | Economy, Politics | 

我曾嘗試到現在爲止都與使用連接它輸出類似

| NewsID | Title  | SectionNames 
===================================== 
| 1  | Hello World | Economy | 
| 1  | Hello World | Politics | 

這是不期望的輸出。

任何幫助或指導文章或教程將不勝感激。謝謝..

+1

可能重複http://stackoverflow.com/questions/16525064/sql-server-find-duplicates-in-a-table-based-on-values-in -a-single-column/16525236#16525236 – EricZ

回答

0

喜歡的東西

select 
NewsID, 
Title, 
STUFF((SELECT ', '+ s.SectionName 
    FROM tblSectionItems si 
    inner join tblSections s on s.SectionId=si.SectionId 
    WHERE si.NewsID= n.NewsID 
    For XML PATH('') 
),1,2,'') as IDs 
FROM tblNews n 
+0

工作得很好..非常感謝你@亞歷山大。在此期間,我會去閱讀有關STUFF和XML PATH的信息,因爲我從來沒有見過他們(不是我的一個SQL人員..) –

+0

STUFF是通常的字符串函數,但「For XML PATH('')」是醜陋的魔術技巧在這裏,但它經常用於從表到列表操作 –

+0

意識到在閱讀它們時,但遺憾的是Entity Framework不支持「For XML PATH('')..我用你的代碼創建了一個SP並會看到我是否可以在EF上使用它。再次感謝。 –

相關問題