티스토리 뷰
스칼라 서브쿼리란
- 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이 나올 수도 있다.
'database' 카테고리의 다른 글
데이터와 정보 (0) | 2021.03.13 |
---|---|
[Database] 데이터베이스의 이해 (0) | 2021.03.13 |
[Database] 데이터 모델링 - 데이터 성능 (0) | 2021.03.01 |
[Database] 데이터 모델링 - 데이터 모델링의 개요 (0) | 2021.03.01 |
[Database] 루씬(Lucene) (0) | 2020.09.27 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 운영체제
- 소프트웨어
- client side rendering
- javascript
- 스텍
- stackframe
- C++
- 알고리즘
- Stack
- BFS
- 퀵정렬
- 최단경로
- 배열
- 교착상태
- server side rendering
- dfs
- C
- 인접리스트
- 세마포어
- 인접행렬
- 클래스
- react
- 이진탐색
- 구조체
- 병행프로세스
- 입출력장치
- 동적프로그래밍
- 자료구조
- 재귀함수
- Java
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
글 보관함