Tìm kiếm theo nhóm

Một phần của tài liệu CƠ SỞ DỮ LIỆU (Trang 58 - 63)

Câu tìm kiếm SQL sử dụng mệnh đề Group By <Danh sách tên thuộc tính> để tìm kiếm theo nhóm giá trị của các thuộc tính và mệnh đề Having <Biểu thức logic> để chỉ sự tìm kiếm có điều kiện trong các nhóm được xác định bởi Group By. Kết quả tìm kiếm là danh sách các bộ được liệt kê tuần tự theo nhóm có cùng giá trị, hết nhóm này đến nhóm khác.

Ví dụ 2.35:

Cho biết số lượng hàng mà mỗi công ty đã cung cấp cho khách hàng.

Select SoHieu, Sum(Soluong) From CPP Group By SoHieu

Cho biết số lượng theo từng mặt hàng mà mỗi công ty đã cung cấp cho khách hàng.

Select SoHieu, MaHieu, Sum(Soluong) From CPP Group By SoHieu, MaHieu Ví dụ 2.36:

Cho biết số hiệu của các công ty đã cung cấp ít nhất là 2 mặt hàng. ở đây ta phân nhóm theo giá trị số hiệu của các tông ty, sau đó đếm trong nhóm đó có ít nhất là hai mặt hàng thì liệt kê vào kết quả.

2.2.1. Câu hỏi tìm kiếm thông tinf. Tìm kiếm có liên kết f. Tìm kiếm có liên kết

Có nhiều trường hợp yêu cầu tìm kiếm bắt buộc hệ quản trị dữ liệu phải thao tác trên nhiều quan hệ có liên kết thông tin với nhau. Ta sử dụng cú pháp <tên quan hệ>.<Tên thuộc tính> để chỉ rõ thuộc tính là thuộc về quan hệ nào, chẳng hạn Co.SoHieu để chỉ thuộc tính SoHieu của quan hệ Co còn CPP.SoHieu là chỉ thuộc tính SoHieu của quan hệ CPP.

Ví dụ 2.37: Với mỗi mặt hàng đã được bán, cho biết mã số mặt hàng và địa chỉ của công ty đã bán mặt hàng đó nằm trong quan hệ Co, hai loại dữ liệu này liên kết với nhau bởi số hiệu công ty đã bán hàng.

Select Co.SoHieu, CPP.MaHieu, Co.DiaChi From Co, CPP Where Co.SoHieu = CPP. SoHieu

Ví dụ 2.38: Với mỗi mặt hàng đã được bán, cho biết mã số mặt hàng, địa chỉ của công ty đã bán mặt hàng đó và địa chỉ chứa hàng.

Dữ liệu cần tìm kiếm nằm trên cả 3 quan hệ và được liên kết với nhau, Co và CPP liên kết bởi SoHieu, CPP và Pr liên kết bởi MaHieu.

2.2. Các cấu trúc thao tác dữ liệu

2.2.1. Câu hỏi tìm kiếm thông ting. Tìm kiếm với các câu hỏi phức hợp g. Tìm kiếm với các câu hỏi phức hợp

* Sử dụng cấu trúc vấn tin lồng nhau.

Ví dụ 2. 39:

Cho biết tên các công ty đã cung cấp mặt hàng có mã hiệu P2.

Chọn tên của các công ty sao cho số hiệu của nó nằm trong tập hợp số hiệu của các công ty có bán mặt hàng P2.

Select TenCo From Co Where SoHieu In (Select SoHieu From CPP Where MaHieu = ‘P2’)

Ví dụ 2.40:

Cho biết tên các công ty không cung ứng mặt hàng P2.

Select TenCo From Co Where SoHieu Not In (Select SoHieu From CPP Where MaHieu = ‘P2’)

2.2. Các cấu trúc thao tác dữ liệu

2.2.1. Câu hỏi tìm kiếm thông ting. Tìm kiếm với các câu hỏi phức hợp g. Tìm kiếm với các câu hỏi phức hợp

*Sử dụng lượng từ.

Lượng từ tồn tại được kí hiệu là “Exists”. Cấu trúc như sau: Exists <Tập hợp>, lượng từ này trả về giá trị đúng nếu tập hợp này khác rỗng. Ví dụ: Cho biết danh sách các công ty có ít nhất một lần cung ứng hàng hoá.

Các công ty có ít nhất một lần cung ứng nếu nó thoả mãn điều kiện là tập hợp của sự lụa chọn các bộ có cùng số hiệu với nó trong quan hẹ CPP là khác rỗng.

Select * From Co Where Exist (Select * From CPP Where Co.SoHieu = CPP.SoHieu)

Lượng từ với mọi được kí hiệu là “All”. Cấu trúc được quy định như sau: <Tên thuộc tính> <Phép so sánh> All <Tập hợp giá trị>, tập hợp giá trị ở đây có thể là kết qủa của một câu vấn tin. Ví dụ: Cho biết số hiệu của công ty cung ứng một lần nào đó với số lượng lớn nhất trong tất cả các lần cung ứng hàng của tất cả các công ty.

Select SoHieu From CPP Where SoLuong > = All (Select SoLuong From CPP) (adsbygoogle = window.adsbygoogle || []).push({});

Lượng từ bất kì “Any” và một vài “Some”. Cấu trúc được quy định như sau: <Tên thuộc tính> <Phép so sánh> Any / Some <Tập giá trị>.

Ví dụ 2.41: Cho biết số hiệu của công ty đã có một lần nào đó cung ứng một chuyến hàng có giá trị lớn hơn số vốn của công ty đó.

2.2. Các cấu trúc thao tác dữ liệu

2.2.1. Câu hỏi tìm kiếm thông ting. Tìm kiếm với các câu hỏi phức hợp g. Tìm kiếm với các câu hỏi phức hợp

*Sử dụng các phép toán trên tập hợp.

Phép trừ tập hợp được kí hiệu là “Minus”. Ví dụ: Cho biết số hiệu của công ty chưa cung ứng một mặt hàng nào.

Tất cả các số hiệu công ty xuất hiện trong quan hệ CPP là của các công ty đã ung ứng hàng và đó là tập con của tập số hiệu công ty trong quan hệ Co. Ta có cấu trúc sau đây:

(Select SoHieu From Co) Minnus (Select SoHieu distinct From CPP)

Phép hợp đựoc ký hiệu là “Union”.

Phép so sánh bằng, kí hiệu là “ = “. Ví dụ: cho biết têncủa các công ty đã cung cấp tất cả các mặt hàng.

Ta nhận thấy rằng tập hợp mã số các mặt hàng của một công ty đã bán nằm trong quan hệ CPP, tập hợp đó đúng bằng tập hợp mã số các mặt hàng nằm trong quan hệ Pr là thoả mãn điều kiện đặt ra. Ta có cấu trúc sau:

Select TenCo From Co Where (Select MaHieu From CPP Where SoHieu = Co. SoHieu) = (Select MaHieu From Pr)

2. Ngôn ngữ hỏi có cấu trúc SQL

2.2. Các cấu trúc thao tác dữ liệu2.2.2. Các thao tác cập nhật. 2.2.2. Các thao tác cập nhật.

Một phần của tài liệu CƠ SỞ DỮ LIỆU (Trang 58 - 63)