기역자형 쿼리 최적화 문의 1 1 1,608

by captain [2015.09.17 23:10:54]


안녕하세요. 

두개의 테이블을 조인해서 데이타를 보여줘야 하는데, 테이블 구조가 ㄱ 자형입니다.

즉, TABLE A

KEY NAME

1     100

2     200

3     300

 

TABLE B (대용량)

KEY ATTRIBUTENAME VALUE

1     AAA                 가나다

1     BBB                  라마바

1     CCC                  사아자

2     AAA                  차카타

2     CCC                  파하

3     CCC                  ABC

4     EEE                   DEF

 

이런 구조의 테이블에서 TABLE A의 ATTRIBUTE NAME이 AAA BBB 인 값을 모두 추출하고자 합니다. (뽑고자 하는 ATTRIBUTE는 결정되어 있음)

희망하는 결과는 아래와 같습니다.

KEY NAME AAA BBB

1    100     가나다 라마바

2    200     차카타

3    300

----------------------------------------------------------------------------------------------------

저는 단순하게 생각해서 TABLE A / TABLE B를 두번 JOIN하여 AAA, BBB 값을 추출하고, GROUP BY나 DISTINCT 하려고 했는데,

이러면 성능에 문제가 있을것 같아서요.. 다른 방법이 없을까요?...

도움 부탁드립니다. ㅠㅠ

DB는 ORACLE, MYSQL 입니다.

 

감사합니다.

 

by 마농 [2015.09.18 01:43:05]
SELECT a.key
     , a.name
     , b.aaa
     , b.bbb
  FROM table_a a
  LEFT OUTER JOIN
       (SELECT key
             , MIN(CASE attributename WHEN 'AAA' THEN value END) aaa
             , MIN(CASE attributename WHEN 'BBB' THEN value END) bbb
          FROM table_b
         WHERE attributename IN ('AAA', 'BBB')
         GROUP BY key
        ) b
    ON a.key = b.key
 ORDER BY key
;

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입