- A subquery is a SQL query within a query.
- Subqueries are nested queries that provide data to the enclosing query.
- Subqueries can return individual values or a list of records
- Subqueries must be enclosed with parenthesis
The SQL subquery syntax
There is no general syntax; subqueries are regular queries placed inside parenthesis.
Subqueries can be used in different ways and at different locations inside a query:
Here is an subquery with the IN operator
1. SELECT column-names
2. FROM table-name1
3. WHERE value IN (SELECT column-name
4. FROM table-name2
5. WHERE condition)
Subqueries can also assign column values for each record:
1. SELECT column1 = (SELECT column-name FROM table-name WHERE condition),
2. column-names
3. FROM table-name
4. WEHRE condition
ORDERITEM
|
Id
|
OrderId
|
ProductId
|
UnitPrice
|
Quantity
|
PRODUCT
|
Id
|
ProductName
|
SupplierId
|
UnitPrice
|
Package
|
IsDiscontinued
|
SQL Subquery Examples
Problem: List products with order quantities greater than 100.
1. SELECT ProductName
2. FROM Product
3. WHERE Id IN (SELECT ProductId
4. FROM OrderItem
5. WHERE Quantity > 100)
Results: 12 records
PoductName
|
Guaraná
Fantástica
|
Schoggi
Schokolade
|
Chartreuse
verte
|
Jack's New
England Clam Chowder
|
Rogede
sild
|
Manjimup
Dried Apples
|
Perth
Pasties
|
...
|
CUSTOMER
|
Id
|
FirstName
|
LastName
|
City
|
Country
|
Phone
|
ORDER
|
Id
|
OrderDate
|
OrderNumber
|
CustomerId
|
TotalAmount
|
SQL Subquery Examples
Problem: List all customers with their total number of orders
1. SELECT FirstName, LastName,
2. OrderCount = (SELECT COUNT(O.Id) FROM [Order] O WHERE O.CustomerId = C.Id)
3. FROM Customer C
This is a correlated subquery because the subquery references the enclosing query (i.e. the C.Id in the WHERE clause).
Results: 91 records
FirstName
|
LastName
|
OrderCount
|
Maria
|
Anders
|
6
|
Ana
|
Trujillo
|
4
|
Antonio
|
Moreno
|
7
|
Thomas
|
Hardy
|
13
|
Christina
|
Berglund
|
18
|
Hanna
|
Moos
|
7
|
Frédérique
|
Citeaux
|
11
|
Martín
|
Sommer
|
3
|
...
|
No comments:
Post a Comment