2015-01-28 3 views
0

ON 절에 조건을 사용하여 테이블을 조인 다음과 같이오라클 : 나는 두 개의 테이블이

Parent       Child 
ABID DEPARTMENT TIME   ABID ABDEPARTMENT 
1  SC   10   1  MC   
1  -ALL-  15   2  SY   
1  MC   20      
2  SC   20        
2  -ALL-  15        
2  MC   20        

내가 쿼리

  1. 의 출력은 아비드 일치해야 있도록 쿼리에 가입 쓰고 싶어 학과. 일치하는 부서 부모 테이블에 존재하지 않는 경우
  2. , 쿼리는 부서와 행을 반환해야 '-ALL-'

그래서에서 출력이

ABID DEPARTMENT TIME ABID ABDEPARTMENT 
1   MC  20 1  MC 
2  -ALL-  15 2  SY 

갱신 1 있어야한다 :

현재 검색어 :

select * from Child LEFT join Parent on Child.AbId = Parent.AbId and Child.ABDEPARTMENT= Parent.DEPARTMENT 
출력 다음 부여합니다

:

ABID DEPARTMENT ABID ABDEPARTMENT TIME  
1   MC  1   MC  20 
2   SY  NULL  NULL  NULL 
+1

현재 쿼리가 무엇입니까? –

+0

질문에서 현재 쿼리를 업데이트했습니다. –

답변

0

가능한 솔루션 :

select * 
    from parent p 
    join child c on p.abid = c.abid and c.abdepartment = p.department 
union 
select * 
    from parent p 
    join child c on p.abid = c.abid and p.department = '-ALL-' 
where not exists (select null 
        from parent p 
        where p.abid = c.abid 
         and c.abdepartment = p.department) 
관련 문제