조인 쿼리문 질문. 0 3 630

by 과부화개발자 [2016.08.10 11:26:23]


안녕하세요..어제 질문을 올렸는데..제 DB에 적용이 안되서..약간 다른 방법으로 질문 드리고자 합니다 

Table1                                          Table2

Age / Name                                 Age / Name / School   << Column Name

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

10  /  SJ                                       10 / SJ  /  PNU

20 / MK                                       20 / MK / HB

30 / LH                                        30 / LH / null

40 / MS                                       20 / MK / CU

40 / MK                                       20 /MS / null

 50/ AA                                        

 

이렇게 두개의 테이블이 있을때

조인을 하여 값을 보여주려고 하는데요

select a.Name ||'-'||a.Age as Profile , b.School from Table1 a , Table2 b 인데..

LH랑 MS는 School이 없어서 null로 나오게 하고싶은데..잘 안되네요..

Table1 에 있는 모든 Name값은 표시되었으면 좋겠고 그 값에 대응되는 Table2번에 School을 나오게 하고싶습니다. 

null은 null로 하고...근데 데이터가 중복해서 나오기도 하고..엉망진창이네요..

답변 부탁드립니다~~

 

 

기대결과

 

Profile              School

 

SJ-10               PNU

MK-20              HB,CU

LH-30              null

MS-40              null

MK-40              null

AA-50               null

 

by 박영식 [2016.08.10 12:54:45]
with t1 (age, name) as (
select 10 , 'SJ' from dual union all
select 20 , 'MK' from dual union all
select 30 , 'LH' from dual union all
select 40 , 'MS' from dual union all
select 40 , 'MK' from dual union all
select 50 , 'AA' from dual
),
t2 (age,name,school) as (
select 10, 'SJ','PNU' from dual union all
select 20, 'MK','HB' from dual union all
select 30, 'LH',null from dual union all
select 20, 'MK','CU' from dual union all
select 20, 'MS',null from dual)
SELECT PROFILE
      ,LISTAGG(SCHOOL, ',') WITHIN GROUP(ORDER BY PROFILE) AS SCHOOL
  FROM (
        SELECT T1.NAME || '-' || T1.AGE      AS PROFILE
              ,T2.SCHOOL
          FROM T1 T1
          LEFT JOIN T2 T2 ON T2.AGE  = T1.AGE
                         AND T2.NAME = T1.NAME
       )
 GROUP BY PROFILE
 ORDER BY SCHOOL

 


by 과부화개발자 [2016.08.10 14:41:55]

감사합니다!!!! LEFT JOIN의 활용이 이럴때였군요...하도 안써서 몰랐습니다 ㅎㅎ


by jkson [2016.08.10 13:56:31]

이전 쿼리가 작동하지 않는다하시니.. DB 종류가 뭔지부터 말씀해주셔야할 것 같네요.

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