안녕하세요. 궁금한게 있어서 질문드립니다. 우선 질문 전 제 테이블 상태와 조회 방향에 대해 간략히 말씀드리면.. 하나의 테이블에서 조회할때 코드의 이름을 보통 5, 6개 정도 가져옵니다. 조회건수는 조건 걸고 기본 1000건 정도 됩니다. 이런 조건에서.. SELECT절에서 코드값의 이름을 가져올때 저는 보통 이렇게 OUTER JOIN을 이용하여 코드의 이름을 가져옵니다. WITH T AS ( SELECT 'id1' AS id, 'abc' AS cd, 2 AS cnt FROM DUAL UNION ALL SELECT 'id1', 'bbb', 1 FROM DUAL ), M AS ( SELECT 'abc' AS cd, '에비씨' AS name FROM DUAL UNION ALL SELECT 'bbb', '비비비' FROM DUAL ) SELECT T.cd, M.name FROM T left outer join m on T.cd = M.cd
이런식으로 M1, M2, M3... 테이블이 OUTER JOIN이 붙습니다.
근데 예전에 제가 어떤분이 짜는걸 봤는데
WITH T AS ( SELECT 'id1' AS id, 'abc' AS cd, 2 AS cnt FROM DUAL UNION ALL SELECT 'id1', 'bbb', 1 FROM DUAL ), M AS ( SELECT 'abc' AS cd, '에비씨1' AS name FROM DUAL UNION ALL SELECT 'bbb', '비비비1' FROM DUAL ) SELECT T.cd, (SELECT M.name FROM M left OUTER JOIN ON (M.cd = T.cd)) AS name from dual
이런식으로 SELECT절에서 네임이 필요한 각 컬럼마다 마다 조인을 걸더라구요.
어느게 더 좋은 방법인지 알수 있을까요? 혹시 이유도 알수있으면 정말 좋겠네요. ㅠㅠ...
답변 부탁드립니다. 감사합니다.
아래 쿼리는 동작하지 않는데..
WITH T AS ( SELECT 'id1' AS id, 'abc' AS cd, 2 AS cnt FROM DUAL UNION ALL SELECT 'id1', 'bbb', 1 FROM DUAL ), M AS ( SELECT 'abc' AS cd, '에비씨' AS name FROM DUAL UNION ALL SELECT 'bbb', '비비비' FROM DUAL ) SELECT t.cd , (SELECT m.NAME FROM m WHERE m.cd = t.cd) AS NAME FROM t
혹시 이런 서브쿼리 말씀하시는 건지요?