기초)두테이블을 조인할때 생기는 중복 제거 방법 알려주세요 0 2 2,936

by 건아클클 sql [2013.05.09 14:39:45]


부모 자식 테이블이 관계가 1:多 일때


  SELECT p.id,
p.id,
c.pid,
c.Contents,
    FROM parent p, child c
   WHERE p.id= c.pid


로 select 하면,

조회 결과에 p.id가 c.pid 수만큼 중복으로  조회되는데

p.id가 중복되지 않고 상단에 하나 나오고 나머지는 빈칸 으로 나오게 하고 싶은데
어떻게 하면 될가요?

p  c  c
    c  c
p  c  c
    c  c
이런식으로 나오게 하고 싶은데요.
by 허승호 [2013.05.09 15:05:21]
WITH PARENT AS ( 
 SELECT 'P1' CD FROM DUAL UNION ALL
 SELECT 'P2' CD FROM DUAL 
)  
, CHILD AS ( 
 SELECT 'P1' CD , 'DATA1' VAL FROM DUAL UNION ALL
 SELECT 'P1' CD , 'DATA2' VAL FROM DUAL UNION ALL
 SELECT 'P1' CD , 'DATA3' VAL FROM DUAL UNION ALL
 SELECT 'P1' CD , 'DATA4' VAL FROM DUAL UNION ALL
 SELECT 'P2' CD , 'DATA1' VAL FROM DUAL UNION ALL
 SELECT 'P2' CD , 'DATA2' VAL FROM DUAL UNION ALL
 SELECT 'P2' CD , 'DATA3' VAL FROM DUAL UNION ALL
 SELECT 'P2' CD , 'DATA4' VAL FROM DUAL  
)  
,LST AS (
SELECT ROW_NUMBER() OVER (PARTITION BY P.CD ORDER BY VAL) AS SEQ
	  ,P.CD 
	  ,C.VAL 
 FROM PARENT P 
 	  ,CHILD C
WHERE P.CD =C.CD
)
SELECT DECODE(SEQ ,1 , CD , NULL) AS PARENT , VAL FROM LST 

by 건아클클 [2013.05.09 15:18:04]

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