리스트 쿼리인데 스칼라 서브쿼리 13번 들어갑니다. 조언 부탁드려요 0 2 1,224

by 쿼리초보 [2022.07.05 18:50:23]


리스트 쿼리인데..

스칼라서브 쿼리가 13번 들어가야되요 ㅜㅜ
 
테이블 a , 테이블 b
1대다 관계인데요
 
테이블 a 를 리스트로 조회할때
테이블 비의 컬럼 을 13번 가져와야 합니다.
 
이렇게 짜면 속도문제가 있을거 같은데
어떨게 하는게 가장 좋을지 조언좀 부탁드립니다
 
Select a.id
           , ( select name from tableB where p_id = a.id and id = 002) as 001_val
           , ( select name from tableB where p_id = a.id and id = 002 ) as 002_val
          , ( select name from tableB where p_id = a.id and id = 003) as 003_val
  From tableB
 
 
위와 같은형태이고 50건씩페이징 하긴하는데
스칼라서브쿼리가 저런식으로 13번 들어갑니다.
 
가장효율적인 방법이 무엇일까요?
 
 
저런경우는 아에 설계를 바꿔서 테이블에이에 13개 컬럼 추가하는데 맞을까요?
 
 
 
by 마농 [2022.07.05 21:26:46]
SELECT a.id
     , MIN(DECODE(b.id, '001', b.name)) name_001
     , MIN(DECODE(b.id, '002', b.name)) name_002
     , MIN(DECODE(b.id, '003', b.name)) name_003
     , MIN(DECODE(b.id, '004', b.name)) name_004
     , MIN(DECODE(b.id, '005', b.name)) name_005
     , MIN(DECODE(b.id, '006', b.name)) name_006
     , MIN(DECODE(b.id, '007', b.name)) name_007
     , MIN(DECODE(b.id, '008', b.name)) name_008
     , MIN(DECODE(b.id, '009', b.name)) name_009
     , MIN(DECODE(b.id, '010', b.name)) name_010
     , MIN(DECODE(b.id, '011', b.name)) name_011
     , MIN(DECODE(b.id, '012', b.name)) name_012
     , MIN(DECODE(b.id, '013', b.name)) name_013
  FROM tableA a
     , tableB b
 WHERE a.id = b.p_id(+)
 GROUP BY a.id
;

 


by 쿼리초보 [2022.07.06 09:18:42]

아 한번만 조인하고 이런방법이...

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