Truy vấn lồng

Một phần của tài liệu Bài giảng cơ sở dữ liệu ths nguyễn thị thúy loan (Trang 64)

 Các câu lệnh SELECT có thể lồng nhau ở nhiều mức.

 Các câu truy vấn con trong cùng một mệnh đề WHERE được kết hợp bằng phép nối logic.

 Câu truy vấn con thường trảvề một tập các giá trị.

Truy vn lng

 Mệnh đề WHERE của câu truy vấn cha

o <biểu thức> <so sánh tập hợp> <truy vấn con> o So sánh tập hợp thường đi cùng với một số toán tử:  IN, NOT IN  ALL  ANY hoặc SOME

o Kiểm tra sự tồn tại: EXISTS, NOT EXISTS

10/4/2012 Nguyễn ThịThúy Loan 257  Có 2 loại truy vấn lồng

o Lồng phân cấp (không tương quan)

 Mệnh đề WHERE của truy vấn con không tham chiếu đến thuộc tính của các quan hệ

trong mệnh đềFROM ởtruy vấn cha.

 Khi thực hiện, câu truy vấn con sẽ được thực hiện trước.

Truy vn lng

10/4/2012 Nguyễn ThịThúy Loan 258

o Lồng tương quan

 Mệnh đề WHERE của truy vấn con tham chiếu ít nhất một thuộc tính của các quan hệ

trong mệnh đề FROM ởtruy vấn cha.

 Khi thực hiện, câu truy vấn con sẽ được thực hiện nhiều lần, mỗi lần tương ứng với một bộcủa truy vấn cha.

Truy vn lng

SELECTMANV, TENNV

FROM NHANVIEN, DIADIEM_PHG

WHERE DIADIEM=‘TP HCM’AND PHG=MAPHGSELECTMANV, TENNV SELECTMANV, TENNV

FROM NHANVIENWHERE PHG IN( WHERE PHG IN( SELECTMAPHG FROMDIADIEM_PHG WHEREDIADIEM=‘TP HCM’) Lng phân cp

Cho biết MaNV, TenNV làm việc tại các phòng ban có địa

điểm tại TP HCM SELECT SODA

FROMNHANVIEN NV, PHANCONG PC

WHERENV.MANV=PC.MA_NVIEN ANDNV.HONV=‘Nguyen’ UNION

SELECT MADA

FROMNHANVIEN NV, PHONGBAN PB, DEAN DA

WHERENV.MANV=PB.TRPHG ANDPB.MAPHG=DA.PHONG

ANDNV.HONV=‘Nguyen’

10/4/2012 Nguyễn ThịThúy Loan 261

Ví d 5

SELECT DISTINCT TENDA FROMDEAN FROMDEAN

WHEREMADA IN(

SELECTSODA

FROMNHANVIEN, PHANCONG

WHEREMANV=MA_NVIEN ANDHONV=‘Nguyen’)

ORMADA IN(

SELECT MADA

FROMNHANVIEN, PHONGBAN, DEAN WHEREMANV=TRPHG ANDMAPHG=PHONG WHEREMANV=TRPHG ANDMAPHG=PHONG

ANDHONV=‘Nguyen’)

10/4/2012 Nguyễn ThịThúy Loan 262

 Tìm những nhân viên có lương lớn hơn lương của ít nhất một nhân viên phòng 4

Ví d

 Tìm những nhân viên không có thân nhân nào

Ví d

 Tìm những nhân viên có lương lớn hơn lương của tất cả nhân viên phòng 4

10/4/2012 Nguyễn ThịThúy Loan 265  Tìm những trưởng phòng có tối thiểu một

thân nhân

Ví d

10/4/2012 Nguyễn ThịThúy Loan 266

SELECTMANV, TENNV FROM NHANVIEN, PHONGBAN FROM NHANVIEN, PHONGBAN

WHERE TENPHG=‘Nghien cuu’AND PHG=MAPHG

SELECTMANV, TENNV FROM NHANVIEN FROM NHANVIEN WHERE EXISTS (

SELECT*FROMPHONGBAN FROMPHONGBAN

WHERETENPHG=‘Nghien cuu’AND PHG=MAPHG )

Một phần của tài liệu Bài giảng cơ sở dữ liệu ths nguyễn thị thúy loan (Trang 64)

Tải bản đầy đủ (PDF)

(127 trang)