3.3.1 Định nghĩa
Truy vấn chọn lă loại truy vấn đƣợc chọn lựa, rút trích dữ liệu từ câc bảng dữ liệu thỏa mên một hoặc nhiều điều kiện năo đó. Khi thực hiện truy vấn chọn, Access tâc động lín dữ liệu vă thể hiện câc bản ghi thoả mên câc điều kiện đăt ra trong một bảng kết quả gọi lă Recordset.
3.3.2 Câc thănh phần trong cửa sổ thiết kết Query
Câc thănh phần trong cửa sổ thiết kế query Cửa sổ thiết kế query gồm 2 phần:
- Table/query pane: khung chứa câc bảng hoặc query tham gia truy vấn. - Lƣới thiết kế (Query by Example: QBE): Chứa tín field tham gia văo truy vấn vă bất kỳ tiíu chuẩn đƣợc sử dụng để chọn câc records. Mỗi cột trong lƣới QBE chứa thông tin về một field duy nhất từ một bảng hoặc query trín Table/query pane. Lƣới thiết kế bao gồm câc thănh phần:
Hình 3.7. Câc thănh phần của QBE
+ Field: lă nơi mă câc tín field đƣợc tạo văo hoặc thím văo vă hiển thị trong kết quả truy vấn.
+ Table: hiển thị tín của câc bảng chứa câc field tƣơng ứng trín dòng Field. + Sort: chỉ định kiểu sắp xếp dữ liệu của câc field trong query.
+ Show: quyết định để hiển thị câc field trong Recordset. + Criteria: Nhập câc điều kiện lọc câc record.
+ Or: thím câc điều kiện lọc tƣơng ứng với phĩp OR, nếu câc biểu thức điều kiện ở câc field cùng đặt trín một dòng thì tƣơng ứng với phĩp AND.
3.3.3 Lập phĩp chọntrong truy vấn
3.3.3.1 Chọnmột nhóm câc bản ghi thỏa mên một điều kiện năo đó
Muốn thực hiện câc phĩp chọn trong khi thể hiện truy vấn ngƣời ta thƣờng sử dụng câc phĩp toân sau:
Phĩp toân Vì dụ Ý nghĩa
< <#20/10/99# Trƣớc ngăy 20/10/99
> >#10/10/98# Sau ngăy 10/10/98
>= >= #05/05/90# Sau vă trong ngăy 05/05/90
<> <>#01/01/99# Khâc ngăy 01/01/99
= = #10/10/97# Trong ngăy 10/10/97
Between... and .. Between #1/2/97# and #1/7/97# Từ ngăy 1/2/97 đến 1/7/97
Ví dụ:
Cho 2 bảng dữ liệu Dslop(Malop, Tenlop, Nganh_hoc, khoahoc) Dssv(Masv, malop, hotensv, ngaysinh, quequan, giotinh, hocbong)
Tạo một truy vấn để hiển thị danh sâch những sinh viín có ngaysinh trong khoảng thời gian từ 05/05/75 đến 05/05/79 bao gồm câc trƣờng: Tenlop, Hotensv, Ngaysinh, nganh_hoc.
Tạo truy vấn chọn vă đƣa 2 bảng dslop vă dssv văo tham gia truy vấn
Đƣa câc trƣờng Tenlop, hotensv, ngaysinh, nganh_hoc văo vùng lƣới QBE Trong hăng Criteria của trƣờng Ngaysinh: Between #05/05/75# and #05/05/79#
Hình 3.8. Chọn một nhóm bản ghi thay thế
3.3.3.2 Ký tự thay thế
Ký tự * : Thay thế một nhóm ký tự bất kỳ Ký tự ? : Thay thế một ký tự
Ký tự [] : Thay thế câc ký tự trong ngoặc vuông Ký tự ! : Phủ định
Ký tự - : Từ ký tự đến ký tự
Ví dụ
Cho 2 bảng dữ liệu:
+ Dslop(Malop, Tenlop, Nganh_hoc, khoahoc)
+ Dssv(Masv, malop, hotensv, ngaysinh, quequan, giotinh, hocbong)
Tạo một truy vấn để hiển thị danh sâch những sinh viín có Tenlop bắt đầu lă "T" bao gồm câc trƣờng: Tenlop, Hotensv, Ngaysinh, nganh_hoc.
Tạo truy vấn chọn vă đƣa 2 bảng dslop vă dssv văo tham gia truy vấn
Đƣa câc trƣờng Tenlop, hotensv, ngaysinh, nganh_hoc văo vùng lƣới QBE Trong hăng Criteria của trƣờng Tenlop: Like "T*"
Hình 3.9. Ký tự thay thế
3.3.3.3 Chọn câc bản ghi không phù hợp với một giâ trị năo đó
Dùng toân tử Not
Ví dụ: Tạo một truy vấn để hiển thị danh sâch những sinh viín có Tenlop không bắt đầu lă "T" bao gồm câc trƣờng: Tenlop, Hotensv, Ngaysinh, nganh_hoc.
3.3.3.4 Định nhiều tiíu chuẩn trong lựa chọn
Dùng phĩp “Vă” vă phĩp “Hoặc” trong một trường
Muốn quy định nhiều tiíu chuẩn trong cùng một trƣờng, chúng ta phải sử dụng toân tử AND (vă ) cùng toân tử OR (hoặc).
Ví dụ 1: Tạo một truy vấn để hiển thị danh sâch những sinh viín có Họ lă "Nguyễn" vă Tín "Thuỷ"bao gồm câc trƣờng: Tenlop, Hotensv, Ngaysinh.
Tạo truy vấn chọn vă đƣa 2 bảng dslop vă dssv văo tham gia truy vấn Đƣa câc trƣờng Tenlop, hotensv, ngaysinh văo vùng lƣới QBE
Trong hăng Criteria của trƣờng Hotensv : Like "Nguyễn *" and "* Thuỷ"
Hình 3.11. Dùng phĩp vă , hoặc trong ví dụ 1
Ví dụ 2: Tạo một truy vấn để hiển thị danh sâch những sinh viín có Họ lă "Nguyễn" vă tín "Thuỷ" vă có quí quân ở "Huế" bao gồm câc trƣờng: Tenlop, Hotensv, ngaysinh,Quequan.
Tạo truy vấn chọn vă đƣa 2 bảng dslop vă dssv văo tham gia truy vấn Đƣa câc trƣờng Tenlop, hotensv, ngaysinh, quequan văo vùng lƣới QBE
Trong hăng Criteria của trƣờng Hotensv : Like "Nguyễn *" and "* Thuỷ" Quequan : Huế
Hình 3.12. Dùng phĩp vă , hoặc trong ví dụ 2
Ví dụ 3: Tạo một truy vấn để hiển thị danh sâch những sinh viín có Họ lă "Lí" hoặc có quí quân ở "Đă Nẵng bao gồm câc trƣờng: Tenlop, Hotensv, Ngaysinh, Quequan.
Tạo truy vấn chọn vă đƣa 2 bảng dslop vă dssv văo tham gia truy vấn Đƣa câc trƣờng Tenlop, hotensv, ngaysinh, Quequan vă vùng lƣới QBE Trong hăng Criteria của trƣờng Hotensv: Like “Lí*”
Trong hang or của trƣờng Quequan: Đă Nẵng
Hình 3.13. Dùng phĩp vă , hoặc trong ví dụ 3
3.3.3.5 Chọn câc bản ghi có chứa hoặc không chứa giâ trị
Chúng ta có thể chọn câc bản ghi có chứa hoặc không chứa giâ trị, chẳng hạn nhƣ tìm những sinh viín mă không có số điện thoại nhă ở.
Access cung cấp 2 phĩp toân
Phĩp toân Ý Nghĩa
IS NULL Trƣờng không chứa giâ trị
IS NOT NULL Trƣờng có chứa giâ trị
Ví dụ:
Tạo một truy vấn để hiển thị danh sâch những sinh viín không có học bổng bao gồm câc trƣờng: Tenlop, Hotensv, hocbong
3.3.3.6 Chọn câc bản ghi thuộc danh sâch câc giâ trị năo đó
Chúng ta có thể sử dụng phĩp toân IN (Danh sâch giâ trị)
Ví dụ
Tạo một truy vấn để hiển thị danh sâch những sinh viín thuộc lớp "Tin K23" hoặc"Tin K24" hoặc "Tin K25" bao gồm câc trƣờng: Tenlop, Hotensv, hocbong
Hình 3.15. Chọn câc bản ghi thuộc danh sâch câc giâ trị năo đó
3.3.3.7 Tham chiếu đến câc trường khâc
Nếu trong biểu thức chọn của truy vấn, câc tính toân tham chiếu đến câc trƣờng phải đặt trong dấu [ ], trƣờng hợp tham chiếu đến trƣờng của bảng khâc phải chỉ rõ bảng nguồn của nó. [Tín bảng]![Tín trƣờng].
3.3.3.8 Tạo trường kiểu biểu thức
Ví dụ
Cho 2 bảng dữ liệu Dssv( Masv, hotensv, ngaysinh, quequan, gioitinh) Dsdiem( Masv, mamon, diem_lan1, diem_lan2)
Tạo truy vấn để hiển thị câc thông tin: Hotensv, mamon, diem_lan1, diem_lan2, dtb, trong đó dtb=(diem_lan1+ diem_lan2*2)/3.
Hình 3.16. Tạo trường kiểu biểu thức * Chú ý
Sau khi thực hiện truy vấn chúng ta không thể thay đổi giâ trị trong trƣờng kiểu biểu thức, tuy nhiín nếu thay đổi giâ trị trong trƣờng tham gia biểu thức thì kết quả trong trƣờng kiểu biểu thức cũng thay đổi theo.
3.3.3.9 Chọn giâ trị duy nhất
Theo mặc định, access sẽ chọn tất cả câc bản ghi thoê mên điều kiện, tuy nhiín đôi khi có nhiều giâ trị giống nhau đƣợc lặp đi lặp lại, do đó để cô đọng dữ liệu thì chúng ta có thể quy định thuộc tính duy nhất trong khi hiển thị
Thuộc tình Unique- values
Chọn Yes: Không thể hiện câc giâ trị trùng nhau Chọn No: Thể hiện câc giâ trị trùng nhau
Thuộc tình Unique- Records
Chọn Yes: Không thể hiện câc bản ghi trùng nhau Chọn No: Thể hiện câc bản ghi trùng nhau
3.3.3.10 Chọn câc giâ trị đầu
Khi hiển thị truy vấn đôi khi chúng ta muốn hiển thị một số bản ghi đầu tiín năo đó thoả mên câc điều kiện thì sử dụng thuộc tính Top values.
3.3.4 Tính tổng trong truy vấn chọn
Trong thực tế, chúng ta thƣờng có những cđu hỏi đặt ra về việc nhóm dữ liệu năo đó, chẳng hạn trong thâng 10 công ty xăng dầu XYZ bân đƣợc bao nhiíu lít xăng, tổng thănh tiền bao nhiíu?
Trong Access chúng ta có thể thực hiện một số phĩp tính lín một nhóm bản ghi bằng câch dùng truy vấn tính tổng
Một số phĩp toân thƣờng sử dụng
Phĩp toân Ý nghĩa
Sum Tính tổng câc giâ trị trín cột của nhóm. Avg Tính trung bình câc giâ trị trín cột của nhóm. Max Tìm giâ trị cao nhất trín cột của nhóm.
Min Tìm giâ trị thấp nhất trín cột của nhóm.
Count Đếm số Record trín cột của nhóm.
First Giâ trị của trƣờng ở bản ghi đầu tiín trong bảng Last Giâ trị của trƣờng ở bản ghi cuối cùng trong bảng Expression Cho biết cột lă biểu thức tính toân.
Where
Cho biết cột lă một biểu thức điều kiện dùng để lọc Record trƣớc khi nhóm.
3.3.4.1 Lập biểu thức chọn cho câc trường dùng để nhóm khi tình tổng
Cũng nhƣ với những truy vấn khâc, chúng ta có thể lập biểu thức chọn cho truy vấn tính tổng theo từng nhóm.
Để thực hiện công việc năy, chúng ta lập biểu thức điều kiện ngay hăng Criteria của trƣờng “group by”.
Ví dụ:
Tạo truy vấn để tính tổng thanhtien của mỗi mặt hăng bân đƣợc trong năm 1999. Tạo truy vấn vă đƣa 2 bảng dshang vă dskhach văo tham gia truy vấn
Chọn Memu Design / Totals hoặc Bấm phải chuột cột bất kỳ tại dòng Field/Totals
Đƣa câc trƣờng tenhang, ngaymua, thanhtien văo vùng lƣới QBE Tại hăng Total của trƣờng tenhang chọn phĩp toân Group by
Tại hăng field của trƣờng ngayban sử dụng hăm year([ngayban]) vă tại hăng total chọn phĩp toân Group by.
Tại hăng Total của trƣờng Thanhtien chọn phĩp toân Sum. Tại hăng Criteria của trƣờng ngaymua: gõ văo giâ trị 1999 Thay đổi tiíu đề cột trong truy vấn
Hình 3.17. Lập biểu thức chọn cho câc trường dùng để nhóm khi tình tổng
Chọn Design /View hoặc Design / Run để xem kết quả
3.3.4.2 Lập biểu thức chọn để giới hạn những bản ghi.
Trong câc phần trƣớc, chúng ta đê biết câch giới hạn câc bản ghi trong truy vấn theo một điều kiện năo đó, sự giới hạn năy gọi lă giới hạn sau khi tình tổng.
Bđy giờ chúng ta lập biểu thức chọn giới hạn số bản ghi trƣớc khi đƣa văo tính tổng trong truy vấn gọi lă giới hạn trƣớc khi tình tổng .
Câch tạo
Tạo truy vấn mới vă đƣa câc bảng tham gia văo truy vấn Đƣa câc trƣờng văo vùng lƣới QBE.
Chọn Memu Design / Totals hoặc Bấm phải chuột cột bất kỳ tại dòng Field/Totals
Thiết lập hăng Total thănh Where đối với trƣờng chúng ta muốn dùng để đặt biểu thức điều kiện giới hạn số bản ghi trƣớc khi tính tổng.
Gõ biểu thức điều kiện tại hăng Criteria tƣơng ứng. Chuyển sang chế độ datasheet view để xem kết quả.
Ví dụ:
Tạo truy vấn để tính tổng soluong, thanhtien của mỗi mặt hăng bân đƣợc đối với khâch mua hăng có Queuqan ở "Huế"
Hình 3.19. Lập biểu thức chọn để giới hạn những bản ghi.
Chú ý: Trong đa số trƣờng hợp, đặt điều kiện lọc trƣớc vă sau khi tính tổng có giâ trịkhâc nhau.
3.3.4.3 Dùng truy vấn để cập nhật bản ghi
Khi truy vấn chỉ dựa trín một bảng, hoặc chi bảng có quan hệ 1- 1 thì tất cả câc trƣờng đều có thể thay đổi, cập nhật. Trong trƣờng hợp có nhiều hơn hai bảng tham gia truy vấn mă có quan hệ 1- ∞ thì sẽ phức tạp hơn.
a)Khi năo dữ liệu trong trường có thể sửa đổi được
Bảng sau đđy liệt kí câc trƣờng hợp khi năo một trƣờng trong kết quả truy vấn hay trong Form có thể sửa đổi đƣợc.
Loại truy vấn hay truờng Dữ liệu trong trƣờng có cho phĩp sửa đổi hay không
Truy vấn dựa trín 1 bảng Có
Truy vấn dựa trín nhiều bảng cóquan hệ 1- 1 Có
Truy vấn dựa trín nhiều bảng có quan hệ 1- ∞ Thông thƣờng
Truy vấn Tham khảo chĩo Không
Truy vấn tính tổng Không
Truy vấn với thuộc tính Unique values
đƣợc thiết lập thănh Yes Không
Truy vấn hội Không
Truy vấn chuyển nhƣợng Không
Trƣờng kiểu biểu thức Không
Trƣờng trong bản ghi đê bị xoâ hoặc bị
khoâ bởi một ngƣời khâc trong môi trƣờng Không nhiều ngƣời sử dụng
b. Chỉnh sửa bản ghi trong truy vấn dựa trín hai bảng có quan hệ 1- ∞ Trong truy vấn dựa trín dữ liệu lă hai bảng có quan hệ 1- ∞, chúng ta có thể sửa đổi tất cả câc trƣờng trừ trƣờng liín kết của bảng bín "1". Tuy nhiín có hai trƣờng hợp mă vẫn có thể sửa đổi dữ liệu trong trƣờng liín kết bín "1" lă:
Có thể sửa đổi dữ liệu trƣờng liín kết bín bảng "1" trong trƣờng hợp liín kết ngoại vă trƣơng tƣơng ứng của liín kết bín bảng "nhiều" không chứa giâ trị.
Có thể sửa đổi dữ liệu trƣờng liín kết bín bảng "1" trong trƣờng hợp đê khai bâo thuộc tính tham chiếu toăn vẹn.