오라클 쿼리 질문입니다. 0 2 1,549

by 아링스 [2016.05.11 15:36:51]


제가 하려는 것이 14년도에 내과(two테이블)와 소아과(three테이블)를

동시에 검진 본 사람을 환자명단이 있는 one테이블에서

추출하려고 하는데 중간에서 막혔습니다.

 정보 : 대상자 명단 추출 - one 테이블에서 추출

         내과이용명단 테이블 - two 테이블, 소아과이용명단 테이블 - three테이블 입니다.

         컬럼은 년도는 date, 주민번호 jumin, 이름 name, addr1 addr2는 주소, tel1은 전화번호입니다.

조인이 필요할 것 같은데 조인을 제대로 이용을 못하겠네요 ㅠ

제가 짜놓은 쿼리에서 무엇을 수정해야 할지 모르겠습니다.

 

select T1.jumin as 주민등록번호, T1.name as 이름, (T1.addr1||T1.addr2) as 주소, T1.tel1 as 전화번호 
      from 
            (
                select distinct a.jumin, a.name, a.addr1, a.addr2, a.tel1 
                from one a, 
                    (
                        select b.date, b.jumin 
                        from two b
                        where b.date between '20140101' and '20141231'
                    )T2
                     where exists 
                    (
                        select c.date, c.jumin 
                        from three c
                        where c.date = '2014'
                    )
                    
            )T1         
                   
                    WHERE T1.jumin in (T2.date, T3.date)
                    GROUP BY T1.jumin, T1.name, (T1.addr1||T1.addr2), T1.tel1

 

by jkson [2016.05.11 16:05:19]

SELECT DISTINCT A.JUMIN -- JUMIN이 PRIMARY KEY 이면 DISTINCT는 필요 없음
              , A.NAME
              , A.ADDR1 || A.ADDR2
              , A.TEL1
  FROM ONE A
 WHERE EXISTS (SELECT 1
                 FROM TWO B
                WHERE JUMIN = A.JUMIN
                  AND B.DATE BETWEEN '20140101' AND '20141231')
   AND EXISTS (SELECT 1
                 FROM THREE C
                WHERE C.DATE = '2014'
                  AND JUMIN = A.JUMIN)

 


by 아링스 [2016.05.11 16:36:34]

감사합니다. 이렇게 쉽게 짜면 되는데 

이해가 쏙쏙 들어오네요!

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