90
bộ câu lệnh. Kết quả của truy vấn con được điền vào truy vấn bên ngoài, và cuối cùng thi
hành truy vấn bên ngoài.
Ví dụ: đưa các các sản phẩm không có mặt trong bất kỳ một đơn hàng nào. Truy vấn con
bên trong sẽ trả về các mã sản phẩm có trong bảng orderdetails. Truy vấn bên ngoài sẽ trả
về các sản phẩm có mã không trong danh sách các mã sản phẩm đó.
SELECT *
FROM
products
WHERE productCode not in
(SELECT productCode
FROM orderdetails
)
Ví dụ:đưa ra các sản phẩm có mặt trong các đơn hàng
SELECT * FROM products
WHERE productCode in
(SELECT productCode
FROM orderdetails
)
91
3. Truy vấn con tương quan
Truy vấn con tương quan không độc lập với truy vấn bên ngoài. Một truy vấn con tương
quan là một truy vấn con sử dụng các giá trị từ truy vấn bên ngoài trong mệnh đề
WHERE của nó. Quá trình thực hiện như sau: các truy vấn bên ngoài được thực hiện
trước tiên và sau đó thi hành truy vấn con bên trong cho mỗi dòng kết quả của truy vấn
bên ngoài.
Ví dụ:đưa ra các sản phẩm có số lượng trong kho lớn hơn trung bình số lượng trong kho
của các sản phẩm cùng loại.
SELECT * FROM
products p
WHERE quantityInStock >
(SELECt avg(quantityInStock)
FROM products
WHERE productLine = p.productLine
)
Quá trình thực hiện truy vấn như sau: với mỗi dòng sản phẩm của truy vấn bên ngoài, câu
lệnh truy vấn bên trong sẽ tìm ra số lượng sản phẩm trung bình của của sản phẩm cùng
loại với sản phẩm đó và kết quả của truy vấn con sẽ được đưa vào mệnh đề WHERE để
kiểm tra.
Ví dụ: đưa ra các sản phẩm có mặt trong các đơn hàng, cách viết dưới đây là một cách
khác của ví dụ ở phần trước. Sử dụng toán tử EXISTS để kiểm tra sự tồn tại.
SELECT *
FROM products as p
92
WHERE exists
(SELECT productCode
FROM orderdetails
WHERE productCode = p.productCode)
Chia sẻ với bạn bè của bạn: