티스토리 뷰

database

[Database] 스칼라 서브쿼리

tonirr 2021. 3. 1. 18:54
스칼라 서브쿼리란
  • select 절에서 서브쿼리가 사용되는 경우 스칼라 서브쿼리라고 함
  • 스칼라 서브쿼리의 특징
    • 하나의 레코드만 리턴이 가능, 두개 이상의 레코드는 리턴할 수 없음
    • 일치하는 데이터가 없더라도 null값을 리턴할 수 있음

tb_emp

----------

emp_id (사원아이디)

emp_name (사원이름)

emp_email (사원이메일)

 

tb_work

-----------

emp_id (사원아이디)

on_time (출근시간)

off_time (퇴근시간)

aprv_emp_id (승인자의 사원아이디)

 

어떤 사원이 매일매일 출퇴근 승인을 받는다고 할 때

tb_work 테이블에 기록이 된다. 기록이 된 후 사원이 속한 팀의 팀장이 출퇴근 승인을 해주면 팀장의 emp_id가 aprv_emp_id에 들어가게 된다.

 

사원번호가 1번인 사원의 출근시간, 퇴근시간, 승인자의 이름을 나타내려면 어떻게 해야할까?

이때 스칼라 서브쿼리를 사용하면 된다.

select
	w.on_time, 
    w.offtime, 
    (select w.emp_name from tb_work w where w.aprv_emp_id=e.emp_id) aprv_name
from
	tb_emp e
where
	emp_id='1';

 

where 조건?

emp_id가 1일 때

from 어디에서?

tb_emp 테이블에서 

select 무엇을?

on_time, off_time, aprv_name을 가져오겠다.

 

aprv_name은 

where 조건?

tb_work의 aprv_emp_id와 e.emp_id가 같을 때

from 어디에서?

tb_work 테이블에서

select 무엇을?

emp_id를 가져오겠다.

 

따라서 스칼라 서브쿼리는 tb_work의 승인자의 아이디와 tb_emp의 사원아이디가 일치하면 사원의 이름을 가져오는 것이다.

두줄이상이면 안되며 승인자가 존재하지 않을 경우 null이 나올 수도 있다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함