not exists도와주세요ㅜㅜ.. 0 3 3,266

by 몽키 [Oracle 기초] not exists oracle [2019.09.11 10:54:00]


학생부 table 과 지역직업table이 있습니다.

학생부 table

이름

나이 직업 지역 기관코드 (PK)
이이일 29 학생 대구 111
이이삼 25 학생 청주 111
이이사 26 직장인 경주 111
이이오 26 학생 대구 111
이이육 26 학생 대구 111
이이칠 25 학생 청주 111

지역,직업table

직업 지역 기관코드
학생 대구 111
학생 청주 111
직장인 경주 111
     
   

 

select 이름, 나이, 직업, 지역, 기관코드
  from 학생부table a
where not exists (select 1
                              from 지역,직업table b
                             where b.기관코드 = a.기관코드
                           and b.지역 = '대구'
                                 and b.직업 = '직장인')

이렇게하면 이이삼, 이이칠이 나오지만 이이삼만 나오게 쿼리문을 만들고 싶어요..

not exists서브쿼리의 내용을 추가하되, 학생부table where 절에는 not exists 서브쿼리만 쓰고 가능할까요???

by 마농 [2019.09.11 11:07:44]

질문이 틀렸는데요?
위 쿼리로 질문에서의 결과가 나오질 않습니다.
쿼리도 이상하고, 결과도 이상하고, 질문도 이상해요.


by 농부지기 [2019.09.11 13:10:33]
.. 혹시 이런걸 원하시나요?
WITH V_STU (name, age, job, area, comp) AS
( SELECT '이이일', 29, '학생', '대구', '111' FROM DUAL UNION ALL
  SELECT '이이삼', 25, '학생', '청주', '111' FROM DUAL UNION ALL
  SELECT '이이사', 26, '직장인', '경주', '111' FROM DUAL UNION ALL
  SELECT '이이오', 26, '학생', '대구', '111' FROM DUAL UNION ALL
  SELECT '이이육', 26, '학생', '대구', '111' FROM DUAL UNION ALL
  SELECT '이이칠', 25, '학생', '청주', '111' FROM DUAL UNION ALL
  SELECT '이이팔', 28, '공무원', '광주', '111' FROM DUAL UNION ALL
  SELECT '이이구', 29, '공무원', '부천', '111' FROM DUAL
),
V_ADD (job, area, comp) AS
( SELECT '학생' , '대구', '111' FROM DUAL UNION ALL
  SELECT '학생' , '청주', '111' FROM DUAL UNION ALL
  SELECT '직장인', '경주', '111' FROM DUAL
)
SELECT * 
  FROM V_STU A
 WHERE NOT EXISTS (SELECT 1
                     FROM V_ADD B
                    WHERE A.job = B.job
                      AND A.area = B.area
                      AND A.comp = B.comp
                      AND B.job  = '학생'
                      AND B.area = '대구');

 


by 생각 [2019.09.11 15:12:39]

질문과 별개로, 

학생부 테이블과 지역,직업 테이블의 상관 관계가 매우 애매합니다.

흔히 말하는 정규화가 전혀 이뤄지지 않았는데, 정규화가 이뤄졌다고 해도 왜 2개 테이블로 분리를 했는지...

아마 예시 테이블에는 추가 컬럼을 생략하셔서 그러신거겠죠?

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