Cỏc truy vấn con tương quan với nhau

Một phần của tài liệu Giáo trình ngôn ngữ SQL pps (Trang 28 - 30)

Cỏc truy vấn con đơn giản nhất cú thể được thực hiện một lần cho tất cả, và kết quả được sử dụng trong truy vấn mức cao hơn. Việc sử dụng cỏc truy vấn con lồng nhau phức tạp hơn đũi hỏi truy vấn con được thực hiện nhiều lần, mỗi lần đối với một phộp gỏn giỏ trị cho một mục nào đú trong truy vấn con. Giỏ trị gỏn xuất phỏt từ một biến bộ ở bờn ngoài truy vấn con. Một truy vấn con kiểu như vậy được gọi là một truy vấn con tương quan. Chỳng ta bắt đầu bằng một vớ dụ.

Vớ dụ 19: Chỳng ta muốn đưa ra Họđệm và Tờn của cỏc nhõn viờn cú lương lớn hơn lương trung bỡnh của đơn vị của họ. Chỳng ta xem xột lần lượt cỏc bộ của quan hệ NHÂNVIấN, với mỗi bộ như vậy, chỳng ta đũi hỏi trong một truy vấn con liệu giỏ trị của Lương cú lớn hơn trung bỡnh lương của đơn vị cú mó số giống như giỏ trị của thành phần MósốĐV của bộ hay khụng. Toàn bộ truy vấn được viết như sau:

1) SELECT Họđệm, Tờn 2) FROM NHÂNVIấN NV 3) WHERE (Lương > 4) (SELECT (AVG(Lương) 5) FROM NHÂNVIấN 6) WHERE MósốĐV = NV.MósốĐV;

Giống như với cỏc truy vấn lồng nhau khỏc, chỳng ta hóy bắt đầu từ truy vấn con trong cựng, cỏc dũng từ 4) đến 6). Nếu NV.MósốĐV ở dũng 6 được thay bằng một số nguyờn như là 5, chỳng ta cú thể hiểu nú hoàn toàn dễ dàng như là một truy vấn hỏi trung bỡnh lương của đơn vị cú mó số là 5. Truy vấn con hiện tại cú khỏc một tý. Vấn đề là ở chỗ chỳng ta khụng biết MósốĐV cú giỏ trị như thế nào. Tuy nhiờn, như chỳng ta sắp xếp trờn cỏc bộ của truy vấn ngoài từ dũng 1) đến dũng 3), mỗi bộ cung cấp một giỏ trị của Mó sốĐV. Sau đú chỳng ta thực hiện truy vấn từ dũng 4) đến dũng 6) với giỏ trị đú của Mó sốĐV để quyết định chõn trị của mệnh đề WHERE trải trờn cỏc dũng từ 3) đến 6). Điều kiện của dũng 3) là đỳng nếu cú một đơn vị cú trung bỡnh lương nhỏ hơn lương của bộ đang xột.

Kết quả Họđệm Tờn Trần Đức Nam Nguyễn Sơn Phạm Bằng Hoàng Giỏp

Khi viết một truy vấn tương quan, điều quan trọng là chỳng ta phải nhận thức được quy tắc phạm vi đối với cỏc tờn. Núi chung, một thuộc tớnh trong một truy vấn con thuộc về một trong cỏc biến bộ của mệnh đề FROM của truy vấn con đú nếu một quan hệ nào đú của biến bộ cú thuộc tớnh đú trong lược đồ của nú. Nếu khụng, chỳng ta tỡm ở truy vấn trực tiếp ngay bờn ngoài ….

Tuy nhiờn, chỳng ta cú thể sắp xếp cho một thuộc tớnh thuộc về một biến bộ khỏc nếu chỳng ta viết trước nú một biến bộ và một dấu chấm. Điều đú là vỡ chỳng ta đó đưa ra bớ danh NV cho quan hệ NHÂNVIấN của truy vấn ngoài và vỡ chỳng ta tham chiếu đến NV.Mó sốĐV trong dũng 6). Chỳ ý rằng nếu

hai quan hệ trong cỏc mệnh đề FROM của cỏc dũng 2) và 5) là khỏc nhau, chỳng ta khụng cần đến bớ danh. Dĩ nhiờn, trong truy vấn con, chỳng ta cú thể tham chiếu trực tiếp đến cỏc thuộc tớnh của quan hệ được chỉ ra trong dũng 2).

Một phần của tài liệu Giáo trình ngôn ngữ SQL pps (Trang 28 - 30)

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

(178 trang)
w