2011-04-27 104 views
0

我正在使用SQLServer 2008,我有兩個表 - 一個是帶有關聯ID的文件列表,另一個是帶有關聯FILE_ID的作者列表。在作者表中,可以有許多具有相同FILE_ID的作者。我想查詢兩個表,並將所有與一個文件中的文件關聯的作者的記錄返回到一個記錄中sql server一對多加入

+0

http://msdn.microsoft.com/en-us/library/ms187518.aspx(外連接) – 2011-04-27 18:50:59

+1

當你說:「所有與一個記錄中的文件相關的作者」,你的意思是你想連接一個記錄上的所有作者信息? – Lamak 2011-04-27 19:13:16

+0

是的拉瑪克,我的意思是。我想爲每個文件返回一行。當我進行連接時,我希望所有與文件關聯的作者都返回到同一條記錄中 – 2011-04-28 16:29:40

回答

0

我看不出有什麼辦法做到這一點。我認爲沒有明顯的方式去做它的原因是它違反了關係設計的整個概念。如果不知道你的理由是否希望返回一條記錄,我只能建議你重新考慮你的方法。

0

提供樣本數據和預期結果通常很有用;這聽起來像你正在尋找一個級聯解決方案,這將是這樣的:

DECLARE @files TABLE (ID int, fName varchar(100)) 
DECLARE @authors TABLE (ID int, fileID int, aName varchar(100)) 

INSERT INTO @files (ID, fName) 
VALUES (1, 'file1'), (2, 'file2') 

INSERT INTO @authors (ID, fileID, aName) 
VALUES (1, 1, 'author1'), 
     (2, 1, 'author2'), 
     (3, 1, 'author3'), 
     (4,2, 'author4') 


SELECT fName, 
    authors = STUFF((SELECT ',' + aName FROM @authors a WHERE a.FileID = f.ID FOR XML PATH('')), 1, 1, '') 
FROM @files f