2011-04-27 2 views
0

SQLServer 2008을 사용하고 있는데 두 개의 테이블이 있습니다. 하나는 연관된 ID가있는 파일 목록이 있고 다른 하나는 연관된 FILE_ID가있는 작성자 목록입니다. authors 테이블에는 동일한 FILE_ID를 가진 많은 작성자가있을 수 있습니다. 하나의 레코드에있는 파일과 관련된 모든 저자와 함께 두 테이블을 쿼리하고 레코드를 반환하려고합니다.SQL Server one to many join

+0

http://msdn.microsoft.com/en-us/library/ms187518.aspx (외부 조인을) –

+1

때를 말 : "한 레코드에있는 파일과 관련된 모든 저자"는 하나의 레코드에 모든 저자 정보를 연결하려는 것입니까? – Lamak

+0

예 Lamak 그게 무슨 뜻인가요. 각 파일에 대해 하나의 행을 반환해야합니다. 조인 할 때 파일과 연관된 모든 작성자가 동일한 레코드에 반환되기를 바랍니다 –

답변

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