0% found this document useful (1 vote)
192 views23 pages

15 - Sub-Queries

This document provides an introduction to SQL subqueries. It defines a subquery as a query within a query. Subqueries allow you to select data rows based on criteria developed during query execution. The document outlines the syntax of subqueries, the three main types of subqueries, and guidelines for using subqueries, including only returning a single value from subqueries used with comparison operators. Examples are provided to illustrate subqueries with IN operators and comparison operators.

Uploaded by

Hamza Ahmad
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (1 vote)
192 views23 pages

15 - Sub-Queries

This document provides an introduction to SQL subqueries. It defines a subquery as a query within a query. Subqueries allow you to select data rows based on criteria developed during query execution. The document outlines the syntax of subqueries, the three main types of subqueries, and guidelines for using subqueries, including only returning a single value from subqueries used with comparison operators. Examples are provided to illustrate subqueries with IN operators and comparison operators.

Uploaded by

Hamza Ahmad
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 23

ADVANCED SQL

SUB-QUERIES
PART A

Prepared By: Humaira Farid


OBJECTIVES – TODAY’S LECTURE
 Definitionof terms
 Write multiple table SQL queries

 Understanding Sub-Queries

 Guidelines for Sub-queries

 Types of Sub-queries

2
Prepared By: Humaira Farid
INTRODUCTION

 Querying one table already done & practiced!


 Real power of relational database
 Storage of data in multiple tables
 Necessitates creating queries to use multiple tables
 Two Basic approaches for processing multiple
tables
 Sub-queries
 Join

Prepared By: Humaira Farid


PROCESSING MULTIPLE TABLES
USING SUB-QUERIES

A subquery is a query within a query.


 Subqueries enable you to write queries that
select data rows for criteria that are actually
developed while the query is executing at run
time.
 Subquery – placing an inner query (SELECT
statement) inside an outer query
 Inner query provides a set of one or more values for
outer query
4

Prepared By: Humaira Farid


PROCESSING MULTIPLE TABLES
USING SUBQUERIES
 Oneof the two basic approaches to process
multiple tables
 Different people will have different preferences about
which technique to use
 Joining is useful when data from several tables are to
be retrieved and displayed
 Subquery when data from tables in outer query are to
be displayed only

Prepared By: Humaira Farid


USING A SUBQUERY
TO SOLVE A PROBLEM

 Who has a salary greater than Ali’s?

Main query:

Which employees have salaries greater than


Ali’s salary?

Subquery:

What is Ali’s salary?

Prepared By: Humaira Farid


SUBQUERY SYNTAX

SELECT select_list
FROM table
WHERE expr operator
(SELECT select_list
FROM table);

 The subquery (inner query) executes once before the


main query (outer query).
 The result of the subquery is used by the main
query.

Prepared By: Humaira Farid


USING A SUB-QUERY

SELECT last_name
FROM employees 11000
WHERE salary >
(SELECT salary
FROM employees
WHERE last_name = 'Ali');

Prepared By: Humaira Farid


The basic concept is to pass a single value or many
values from the subquery to the next query and so on.

Prepared By: Humaira Farid


3

When reading or writing SQL subqueries, you should start from the bottom
upwards, working out which data is to be passed to the next query up. 9
SUBQUERY TYPES

 There are three basic types of subqueries.

Prepared By: Humaira Farid


1. Subqueries that operate on lists by use of the
IN operator or with a comparison operator.
 These subqueries can return a group of values,
but the values must be from a single column of
a table.

10
SUBQUERY TYPES

2. Subqueries that use an unmodified


comparison operator (=, <, >, <>)

Prepared By: Humaira Farid


 these subqueries must return only a single,
scalar value.
3. Subqueries that use the EXISTS operator to
test the existence of data rows satisfying
specified criteria.

11
GUIDELINES FOR USING SUBQUERIES

 Enclose subqueries in parentheses.


 Place subqueries on the right side of the

Prepared By: Humaira Farid


comparison condition.
 The ORDER BY clause in the subquery is not
needed.
 Subqueries cannot manipulate their results internally.
 Use single-row operators with single-row
subqueries, and use multiple-row operators
with
multiple-row subqueries. 12
SUB-QUERIES EXAMPLE

 SELECT CUSTOMER_NAME FROM CUSTOMER_T, ORDER_T


WHERE CUSTOMER_T.CUSTOMER_ID =
ORDER_T.CUSTOMER_ID
AND ORDER_ID = 1008;

 SELECT CUSTOMER_NAME FROM CUSTOMER_T


WHERE CUSTOMER_T.CUSTOMER_ID =
(SELECT ORDER_T.CUSTOMER_ID FROM ORDER_T
WHERE ORDER_ID = 1008);

13

Prepared By: Humaira Farid


SUBQUERIES AND THE IN
OPERATOR

 Subqueries that are introduced with the keyword


IN take the general form:

Prepared By: Humaira Farid


 WHERE expression [NOT] IN (subquery)
 The only difference in the use of the IN operator
with subqueries is that the list does not consist of
hard-coded values.

14
SUBQUERY EXAMPLE

 Show all customers who have placed an order

Many programmers simply use IN even The IN operator will test to see if the
CUSTOMER_ID value of a row is included

Prepared By: Humaira Farid


if equal sign (=) would also work
in the list returned from the subquery

SELECT CUSTOMER_NAME FROM CUSTOMER_T


WHERE CUSTOMER_ID IN
(SELECT DISTINCT CUSTOMER_ID FROM ORDER_T);

Subquery is embedded in
parentheses. In this case it
returns a list that will be used
in the WHERE clause of the
15
outer query
SUBQUERIES AND COMPARISON
OPERATORS

 The general form of the WHERE clause


with a comparison operator is similar to
that used thus far in the text.

Prepared By: Humaira Farid


 Note that the subquery is again enclosed by
parentheses.

WHERE <expression> <comparison_operator> (subquery)

16
SUBQUERIES AND COMPARISON
OPERATORS

 The most important point to remember


when using a subquery with a comparison
operator is that the subquery can only

Prepared By: Humaira Farid


return a single or scalar value.
 This is also termed a scalar subquery
because a single column of a single row is
returned by the subquery.

17
To identify the students who have failed in course CSC273
Select student_id
From marks
Where course_id = ‘CSC273’
And grade < 40;

Prepared By: Humaira Farid


If we want to retrieve a name based on a student id
Select stu_name
From student
Where student_id = 9292145;

Select stu_name
From Student
Where student_id in ( select student_id
From marks
Where course_id = ‘CSC273’
Why And grade < 40); 18
use
IN?
Select stuname
From Student
Where studentid in ( select studentid
From marks
Where subjectid =
‘COMP1011’

Prepared By: Humaira Farid


And grade < 40);

Retrieve a list of Retrieve the name


student id’s who of the student id’s
have mark < 40 for in this list.
CSC273

19
SUBQUERIES AND COMPARISON
OPERATORS
 If we substitute this query as a subquery in
another SELECT statement, then that SELECT
statement will fail.
 This is demonstrated in the next SELECT

Prepared By: Humaira Farid


statement. Here the SQL code will fail because the
subquery uses the greater than (>) comparison
operator and the subquery returns multiple values.

SELECT emp_ssn
FROM employee
WHERE emp_salary >
(SELECT emp_salary
FROM employee
WHERE emp_salary > 40000);
20
AGGREGATE FUNCTIONS AND COMPARISON
OPERATORS

 The aggregate functions (AVG, SUM, MAX,


MIN, and COUNT) always return a scalar
result table.

Prepared By: Humaira Farid


 Thus, a subquery with an aggregate
function as the object of a comparison
operator will always execute provided you
have formulated the query properly.

21
AGGREGATE FUNCTIONS AND COMPARISON
OPERATORS
SELECT emp_last_name "Last Name",
emp_first_name "First Name",
emp_salary "Salary"
FROM employee

Prepared By: Humaira Farid


WHERE emp_salary >
(SELECT AVG(emp_salary)
FROM employee);

Last Name First Name Salary


--------------- --------------- ----------
Bordoloi Bijoy $55,000
Joyner Suzanne $43,000
Zhu Waiman $43,000
Joshi Dinesh $38,000
22
Exercise
1. Write a query that will list the names of who is older than
the average student.

Prepared By: Humaira Farid


TIP the sub-query needs to select the average age of students
this should be used then as a filter.

SELECT stu_name
FROM student
WHERE age >
(SELECT avg(age) FROM student);

This will return 25 students of the 74 who are enrolled as being


older than the average age.
23

You might also like