안녕하세요^^
SQLServer는 2008버전을 사용하고 있습니다.
한번에 쿼리 할 수 있는 방법이 있는지 궁금합니다.
두개의 테이블이 있습니다. 이하 A, B라구 지칭하겠습니다.
A테이블
A.ID | Ref1 | Ref2 | Ref3 |
1 | 2 | 3 | 4 |
B테이블
B.ID | B.Key |
1 | 1000 |
2 | 2000 |
3 | 3000 |
4 | 4000 |
A테이블에 Ref1, Ref2, Ref3는 B테이블의 ID값을 가지고 있습니다.
쿼리 결과를 아래와 같이 표현하고 싶은데...
A.ID | Ref1 | Key | Ref2 | Key | Ref3 | Key |
1 | 2 | 2000 | 3 | 3000 | 4 | 4000 |
어떤 방법으로 하는게 좋을지 ....
잘 갈피가 잡히지 않네요...
한번에 쿼리를 뽑아 낼수 있나요?
아니면 과정을 조금 거치더라도 좀 쉽게 뽑아 낼수 있나요?
조언 부탁드립니다.
감사합니다^^
Comment 3
-
나는짱이야
2014.08.06 09:01
-
A테이블이 저 상태로 확정이라면 서브쿼리나 JOIN을 이용해서 뽑을 수 있습니다만
A테이블에 Ref4, Ref5 이렇게 컬럼을 추가 할 생각이라면 설계를 다시 생각해보셔야 할것 같습니다.
DECLARE @A TABLE (AID INT, Ref1 INT, Ref2 INT, Ref3 INT)
DECLARE @B TABLE (BID INT, BKey INT)
INSERT @A SELECT 1, 2, 3, 4
INSERT @B
SELECT 1, 1000 UNION
SELECT 2, 2000 UNION
SELECT 3, 3000 UNION
SELECT 4, 4000
SELECT AID,
Ref1, [Key] = (SELECT BKey FROM @B B WHERE A.Ref1 = B.BID),
Ref2, [Key] = (SELECT BKey FROM @B B WHERE A.Ref2 = B.BID),
Ref3, [Key] = (SELECT BKey FROM @B B WHERE A.Ref3 = B.BID)
FROM @A A
SELECT A.AID, A.Ref1, B.BKey, A.Ref2, C.BKey, A.Ref3, D.BKey
FROM @A A INNER JOIN
@B B ON A.Ref1 = B.BID INNER JOIN
@B C ON A.Ref2 = C.BID INNER JOIN
@B D ON A.Ref3 = D.BID
-
전념
2014.08.08 15:57
답변 감사다릅니다^^
저 상태로 확정입니다.
해커님 쿼리에 많은 도움이 되었습니다.
감사합니다^^
union구문을 사용하면 되지 않을까합니다.