나 테이블 구조를 보여 드리죠고유 검색 데이터 가져 오기를
예약 표
DECLARE @Book TABLE (BookID INT, BookName VARCHAR(30))
INSERT INTO @Book
(BookID, BookName)
SELECT '1', 'Art of Programming Contest' UNION ALL
SELECT '2', 'Programming in C' UNION ALL
SELECT '3', 'Programming in C++'
--SELECT * FROM @Book
BookAuthors 표
DECLARE @BookAuthors TABLE (BookID INT, AuthorID INT)
INSERT INTO @BookAuthors
(BookID, AuthorID)
SELECT '1', '1' UNION ALL
SELECT '1', '2' UNION ALL
SELECT '2', '1' UNION ALL
SELECT '2', '3' UNION ALL
SELECT '3', '2' UNION ALL
SELECT '3', '4'
--SELECT * FROM @BookAuthors
BookCategories 표
DECLARE @BookCategories TABLE (BookID INT, CategoryID INT)
INSERT INTO @BookCategories
(BookID, CategoryID)
SELECT '1', '1' UNION ALL
SELECT '1', '2' UNION ALL
SELECT '2', '1' UNION ALL
SELECT '2', '3' UNION ALL
SELECT '3', '2' UNION ALL
SELECT '3', '4'
--SELECT * FROM @BookCategories
이 표를 사용하여 BookID
, AuthorID
및 CategoryID
으로 책을 검색하고 싶습니다. AuthorID
및 CategoryID
검색의 경우 각각 BookAuthors
및 BookCategories
테이블에 가입해야합니다. 그러나 AuthorId
으로 검색하려고하면 결과에 여러 번 같은 BookId
이 표시됩니다.
쿼리
SELECT BK.BookID, BA.AuthorID, BC.CategoryID
FROM @Book BK
LEFT JOIN @BookAuthors BA ON BA.BookID = BK.BookID
LEFT JOIN @BookCategories BC ON BC.BookID = BK.BookID
WHERE BA.AuthorID = 1
결과
BookID ----- AuthorID ----- CategoryID
1 1 1
1 1 2
2 1 1
2 1 3
지금이 좋은 때까지 나는 생각한다; 이제 다음과 같은 결과를 생성하고 싶습니다.
BookID ----- AuthorIDs ----- CategoryIDs
1 1,2 1,2
2 1,3 1,3
아이디어가 있습니까?
가능한 중복 (http://stackoverflow.com/questions/451415/simulating-group-concat-mysql-function-in-microsoft-sql-server-2005) –