Chapter 06 - Subqueries
Chapter 06 - Subqueries
Subqueries
Copyright
Objectives
After completing this lesson, you should
be able to do the following:
Describe the types of problems that
subqueries can solve
Define subqueries
List the types of subqueries
Write single-row and multiple-row
subqueries
6-2
Copyright
Using a Subquery
to Solve a Problem
Who has a salary greater than Jones?
Main Query
6-3
Copyright
Subqueries
SELECT
FROM
WHERE
select_list
table
expr operator
(SELECT
FROM
select_list
table);
The subquery (inner query) executes once before the main query.
The result of the subquery is used by the main query (outer
query).
6-4
Copyright
Using a Subquery
SQL> SELECT ename
2 FROM
emp
2975
3 WHERE sal >
4
(SELECT sal
5
FROM
emp
6
WHERE empno=7566);
ENAME
ENAME
------------------KING
KING
FORD
FORD
SCOTT
SCOTT
6-5
Copyright
6-6
Copyright
Types of Subqueries
Single-row subquery
Main query
Subquery
returns
CLERK
Multiple-row subquery
Main query
Subquery
returns
CLERK
MANAGER
Multiple-column subquery
Main query
Subquery
6-7
Copyright
returns
CLERK
7900
MANAGER 7698
Single-Row Subqueries
Return only one row
Use single-row comparison operators
Operator
6-8
Meaning
Equal to
>
Greater than
>=
<
Less than
<=
<>
Not equal to
Copyright
SELECT
FROM
WHERE
AND
ENAME
ENAME
------------------MILLER
MILLER
6-9
ename, job
emp
job =
(SELECT
FROM
WHERE
sal >
(SELECT
FROM
WHERE
CLERK
job
emp
empno = 7369)
1100
sal
emp
empno = 7876);
JOB
JOB
----------------CLERK
CLERK
Copyright
ENAME
ENAME
------------------SMITH
SMITH
JOB
SAL
JOB
SAL
----------------- ----------------CLERK
800
CLERK
800
6-10
Copyright
800
MIN(sal)
emp);
6-11
SELECT
FROM
GROUP BY
HAVING
Copyright
deptno, MIN(sal)
emp
deptno
MIN(sal) >
(SELECT
FROM
WHERE
800
MIN(sal)
emp
deptno = 20);
What Is Wrong
with This Statement?
SQL> SELECT empno, ename
2 FROM
emp
3 WHERE sal =
4
h(SELECT
t
i
w
or
5
FROM
t
a
r
e
y
6 ow o p
quer GROUP BY
b
-r
u
e
l
s
g
Sin ple-row
i
t
l
u
m
MIN(sal)
emp
deptno);
ERROR:
ERROR:
ORA-01427:
ORA-01427: single-row
single-row subquery
subquery returns
returns more
more than
than
one
one row
row
no
no rows
rows selected
selected
6-12
Copyright
job
(SELECT job
FROM
emp
WHERE
ename='SMYTHE');
ry
e
u
q
b
u
S
6-13
Copyright
s
e
u
al
v
no
s
rn
u
t
re
Multiple-Row Subqueries
Return more than one row
Use multiple-row comparison operators
Operator
Meaning
IN
ANY
ALL
6-14
Copyright
SELECT
FROM
WHERE
AND
EMPNO
EMPNO
----------------7654
7654
7521
7521
6-15
ENAME
ENAME
------------------MARTIN
MARTIN
WARD
WARD
Copyright
JOB
JOB
----------------SALESMAN
SALESMAN
SALESMAN
SALESMAN
6-16
Copyright
ENAME
ENAME
------------------KING
KING
JONES
JONES
FORD
FORD
SCOTT
SCOTT
Copyright
JOB
JOB
----------------PRESIDENT
PRESIDENT
MANAGER
MANAGER
ANALYST
ANALYST
ANALYST
ANALYST
Summary
Subqueries are useful when a query is
based on unknown values.
SELECT
FROM
WHERE
6-18
select_list
table
expr operator
(SELECT select_list
FROM
table);
Copyright
Practice Overview
Creating subqueries to query values based on unknown criteria
Using subqueries to find out what values exist in one set of data and not in another
6-19
Copyright