[데이터베이스] Subquery
Subquery는 Join과 굉장히 유사한 성질을 갖습니다.
즉, 특정 질의를 Join으로도 표현할 수 있고 Subquery로도 표현할 수 있습니다.
위의 세 가지 Table을 사용하여 예시를 들겠습니다.
질의 : 'Harrison Ford'가 출연한 영화의 모든 producer를 찾아라.
먼저, 기본적인 Join연산을 통해 해결해보도록 하겠습니다.
일단 'Harrision Ford'가 있는 starsIn 테이블을 먼저 봐야겠습니다. starsIn에서 'Harrision Ford'가 출연한 Movietitle, movieyear을 뽑고, movie 테이블과 Join한 후 producercno를 통해 movieExec 테이블과 다시 Join하여 name을 뽑아내면 될 것 같습니다.
SELECT name
FROM MovieExec, Movie, StarsIn
WHERE starName = 'Harrision Ford'
AND title = movieTitle
AND year = movieYear
AND certNo = producerCNo;
또는 다음과 같이 tuple을 통해 질의를 생성할 수 있습니다.
SELECT name
FROM MovieExec, Movie, StarsIn
WHERE (title, year) = (movieTitle, movieYear)
AND certNo = producerNo
AND starName = 'Harrison Ford';
Subquery를 활용한 질의는 다음과 같습니다.
SELECT name
FROM MovieExec
WHERE certNo IN
(SELECT producerCNo
FROM StarsIn
WHERE (title, year) IN
(SELECT movieTitle, movieYear
FROM StarsIn
WHERE starName = 'Harryson Ford'));
위와 같이 WHERE 내부에 또 SELECT문이 반복 되는 것을 Subquery라고 합니다.
반응형
'[컴퓨터공학] > [데이터베이스]' 카테고리의 다른 글
[데이터베이스] SQL 집합 연산 (0) | 2022.06.13 |
---|---|
[데이터베이스] Null Value (0) | 2022.06.12 |
[데이터베이스] Pattern match, Posix Regular Expression (0) | 2022.06.12 |
[데이터베이스] Relational Algebra 예제 (0) | 2022.03.30 |
[데이터베이스] 관계 대수 (Relational Algebra) (0) | 2022.03.29 |