TableA 에
seq |
title |
1 |
1번 제목입니다. |
2 |
2번 제목입니다. |
TableB
seq |
Aseq |
name |
1 |
1 |
홍길동 |
2 |
2 |
유관순 |
3 |
2 |
김유신 |
이런식으로 있고,
TableA.seq = TableB.Aseq 와 조인입니다.
검색시
seq |
title |
Bseq |
name |
1 |
1번 제목입니다. |
1 |
홍길동 |
2 |
2번 제목입니다. |
2, 3 |
유관순, 김유신 |
이런식으로 나오게 하고 싶은데... 방법이 있을까요?;
Comment 4
-
쓸만한게없네(윤선식)
2013.03.04 15:01
-
깨비꼬비
2013.03.04 17:46
오류가 나네요;;
'XML' 근처의 구문이 잘못되었습니다.
'FOR' 키워드 근처의 구문이 잘못되었습니다.어찌하였든, STUFF 라는게 있다는건 알게되었네요.. 감사합니다.
-
건우아빠
2013.03.04 18:12
-
쓸만한게없네(윤선식)
2013.03.05 01:07
2000 이었군요... 요즈음 소고기를 안 먹어서 그런 듯(?)... 꾸벅.
이거 원하시는 건지??? STUFF 찾아보세요...
CREATE TABLE dbo.TableA
(
seq INT,
title VARCHAR(20)
)
GO
CREATE TABLE dbo.TableB
(
seq INT,
ASeq INT,
name VARCHAR(20)
)
GO
INSERT INTO dbo.TableA (seq, title) VALUES (1, '1번 제목입니다.');
INSERT INTO dbo.TableA (seq, title) VALUES (2, '2번 제목입니다.');
GO
INSERT INTO dbo.TableB (seq, Aseq, name) VALUES (1, 1, '홍길동');
INSERT INTO dbo.TableB (seq, Aseq, name) VALUES (2, 2, '유관순');
INSERT INTO dbo.TableB (seq, Aseq, name) VALUES (3, 2, '김유신');
GO
SELECT A.seq, A.title, B.Bseq, B.name
FROM
dbo.TableA A LEFT JOIN
(
SELECT
DISTINCT Aseq AS seq,
STUFF((
SELECT ',' + CONVERT(VARCHAR(20),seq)
FROM TableB b
WHERE b.Aseq = a.Aseq
FOR XML PATH('')
),1,1,'') AS Bseq,
STUFF((
SELECT ',' + name
FROM TableB b
WHERE b.Aseq = a.Aseq
FOR XML PATH('')
),1,1,'') AS name
FROM TableB a
) B ON A.seq = B.seq
결과
http://msdn.microsoft.com/en-us/library/aa259350(v=sql.80).aspx