- Action query: gồm các loại truy vấn như Delete xóa, Update cập nhật, Append thêm, Make Table tạo bảng mới cho phép bạn tạo ra các bảng mới hoặc thay đổi dữ liệu trong các bảng hiện có
Trang 1- Select query: là loại câu truy vấn được sử dụng nhiều nhất, giúp chúng ta xem thông tin từ
nhiều bảng khác nhau trong CSDL theo một tiêu chí nào đó
- Total query: là một loại đặc biệt của Select query Thực hiện chức năng tổng hợp dữ liệu
trên một nhóm các bản ghi thông qua hàm thống kê như: Sum, Count, Min, Max, Avg,
- Crosstab query: là Total query nhưng kết quả hiển thị dưới dạng bảng, với các tiêu đề hàng
và tiêu đề cột dựa trên các trường Dữ liệu trong các ô giao giữa hàng và cột được tính toánthông qua hàm thống kê như: Sum, Count, Min, Max, Avg,
- Action query: gồm các loại truy vấn như Delete (xóa), Update (cập nhật), Append (thêm),
Make Table (tạo bảng mới) cho phép bạn tạo ra các bảng mới hoặc thay đổi dữ liệu trong các bảng hiện có của cơ sở dữ liệu Action query khi thực thi sẽ ảnh hưởng đến một hoặc nhiều bản ghi trong các bảng
1.2 Các bước xây dựng query
1 Phân tích yêu cầu lấy thông tin
a Xác định loại câu truy vấn
b Xác định bảng nguồn của câu truy vấn
i Bảng chứa các trường xuất hiện trong bảng kết quả
ii Bảng chứa các trường dùng làm điều kiện iii Bảng chứa các trường tham gia vào biểu thức tính toán
iv Bảng dùng để liên kết
c Xác định các trường xuất hiện trong bảng kết quả
2 Thực thi câu truy vấn
1.2.1 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
Trang 22
- Lưới thiết kế (Query by Example: QBE) : Chứa tên trường tham gia vào truy vấn và bất kỳ
tiêu chuẩn nào được sử dụng để chọn các bản ghi mong muốn (điều kiện lọc) Mỗi cột trong lưới QBE chứa thông tin về một trường 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:
- Field: là nơi tạo hoặc thêm các trường, các trường này sẽ hiển thị trong kết quả truy vấn
- Table: tên của các bảng chứa các trường tương ứng trên dòng Field
- Sort: kiểu sắp xếp dữ liệu của các trường trong query
- Show: có hiển thị các trường trong kết quả câu truy vấn không
- Criteria: Nhập các điều kiện lọc
- 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
trường cùng đặt trên một dòng thì tương ứng với phép AND
1.2.2 Các bước thực hiện một câu truy vấn
Để tạo và thực thi một câu truy vấn ta làm như sau:
- Chọn Tab Create Group Queries Query Design
Các trường
Lưới QBE
Table/Query pane
Trang 33
- Xuất hiện cửa sổ thiết kế Query và cửa sổ Show Table cho phép chọn các bảng hoặc Query
tham gia truy vấn
- Chọn các bảng click Add để thêm các bảng vào cửa sổ thiết kế Query
- Sau khi chọn đủ các bảng hoặc Query cần thiết, click nút Close để đóng cửa sổ Show Table
- Chọn các trường cần hiển thị trong kết quả vào lưới thiết kế bằng cách drag chuột kéo tên trường từ các bảng hoặc click đúp vào tên trường
- Nhập điều kiện lọc tại dòng Criteria (nếu có)
- Chọn nút Run để thực thi
Ví dụ: Hiển thị thông tin về hàng hoá có trong CSDL theo từng loại hàng?
- Bảng nguồn: HangHoa, LoaiHang
- Trường: MaLoai, TenLoai, MaHang, TenHang, DVT, Dongia
Group Queries
Cửa sổ Show TableCửa sổ thiết kế
Query
Trang 44
- Giao diện thiết kế
- Giao diện kết quả
1.2.3 Các thao tác trong cửa sổ thiết kế query
a Chọn trường trong lưới thiết kế
Để chọn một trường hoặc nhiều trường trong lưới thiết kế, ta đưa chuột lên trên tên trường khi chuột có dạng mũi tên màu đen hướng xuống thì click chuột để chọn, drag chuột để chọn nhiều trường
Trang 55
b Di chuyển trường
Sau khi chọn trường cần di chuyển, drag chuột trên tên trường để di chuyển
c Chèn thêm trường hoặc xóa trường
Trong Query Tools Tab Design Query Setup Insert Columns (Delete Columns)
d Xem thuộc tính của trường (xem phần 1.3.5)
e Xem các thuộc tính của Query (xem phần 1.3.4)
f Thêm Table/Query vào truy vấn
Khi thiết kế query, nếu cần chọn thêm bảng, click nút Show Table trong nhóm lệnh Query Setup
g Xóa Table/Query trong khỏi truy vấn
Click phải trên Table/Query cần xóa, chọn Remove Table
Trang 6(Xem cách tạo trong phần trên)
Ví dụ: Hiển thị thông tin về tất cả các lớp có trong CSDL theo từng chuyên ngành.
- Bảng nguồn: ChuyenNganh, Lop
- Trường: MaCN, TenCN, MaLop, TenLop
- Giao diện thiết kế
- Giao diện kết quả
Trang 77
1.3.3 Xây dựng biểu thức điều kiện
Ngoài việc sử dụng các truy vấn để chọn các trường hiển thị các thông tin cần thiết, bạn còn có thể
sử dụng các truy vấn để hiển thị một số các bản ghi theo một điều kiện nào đó
Ví dụ: Hiển thị thông tin của các lớp thuộc chuyên ngành Tiếng anh văn phòng?
- Bảng nguồn: ChuyenNganh, Lop
- Trường: MaCN, TenCN, MaLop, TenLop
- Giao diện thiết kế
- Giao diện kết quả
Trang 88
a Cách thể hiện giá trị trong biểu thức điều kiện
Kiểu dữ liệu Cách thể hiện Ví dụ
Trang 9Khi bạn muốn giới hạn các bản ghi dựa trên nhiều điều kiện ở nhiều trường khác nhau, thì Access
sẽ kết hợp các điều kiện lại với nhau bằng cách sử dụng toán tử And và Or, cho hai trường hợp:
Trang 1010
- Nếu các điều kiện phải được thoả mãn đồng thời thì các điều kiện phải được liên kết nhau bởi
phép AND, bằng cách nhập các điều kiện trên cùng một dòng Criteria trong lưới thiết kế
query
Ví dụ 1: Hiển thị các mặt hàng thuộc loại Bia mà có đơn giá từ 2000 đồng trở lên?
- Nếu chỉ cần thỏa mãn một trong các điều kiện thì các điều kiện được liên kết nhau bởi phép
OR, bằng cách nhập các điều kiện trên các dòng khác nhau trong lưới thiết kế query
Ví dụ 2: Hiển thị các mặt hàng thuộc loại Bia hoặc các mặt hàng có đơn vị tính là Chai?
1.3.4 Thuộc tính của câu truy vấn
Để chọn thuộc tính câu truy vấn
Cách 1: Trong giao diện thiết kế câu truy vấn kích chuột vào Table/Query Pane Tab Design
Group Show/Hide Property Sheet
Trang 1111
Cách 2: Kích chuột phải vào phần Table/Query Pane chọn Properties…
Xuất hiện cửa sổ Property Sheet là danh sách các thuộc tính của câu truy vấn:
Trang 12- Nếu muốn hiển thị danh sách các bản ghi có giá trị cao nhất ở trường được chỉ định thì sắp
xếp trường đó theo chiều giảm dần (Descending)
- Nếu muốn hiển thị danh sách các bản ghi có giá trị thấp nhất ở trường được chỉ định thì sắp
xếp trường đó theo chiều tăng dần (Ascending)
- Trong ô Return ta nhập vào số bản ghi muốn hiển thị
Hoặc trong thuộc tính của câu truy vấn
Trang 1313
Các tùy chọn trong Top Values:
- All : Hiển thị tất cả các bản ghi của Query
- 5 : Hiển thị 5 bản ghi đầu tiên
- 25 : Hiển thị 25 bản ghi đầu tiên
- 100 : Hiển thị 100 bản ghi đầu tiên
- 5% : Hiển thị 5% bản ghi đầu tiên trên tổng số bản ghi
- 25% : Hiển thị 25% bản ghi đầu tiên trên tổng số bản ghi
Nếu các bản ghi thuộc Top Values có giá trị trùng nhau thì chúng cũng xuất hiện trong kết quả
Ví dụ: Xem Số HD, Ngày mua của 5 hóa đơn có mua mặt hàng “Bia chai Heineken” với số lượng
nhiều nhất
- Bảng: HoaDon, CT_HoaDon, HangHoa
- Trường: SoHD, Ngayban, Soluong, TenHang
- Giao diện thiết kế
Trang 1414
- Giao diện kết quả
b Unique Values
Nếu muốn chỉ xuất hiện duy nhất một bản ghi trong các bản ghi có giá trị trùng nhau ta click phải
trong cửa sổ thiết kế query → chọn Properties, tại thuộc tính Unique Values → chọn Yes
Trang 1515
Ví dụ: In ra số HĐ, ngày mua của các hóa đơn đã mua các mặt hàng có đơn vị tính là “chai”
- Bảng: HoaDon, CT_HoaDon, HangHoa
- Trường: SoHD, Ngayban, DVT
- Giao diện thiết kế
- Giao diện kết quả
1.3.5 Thuộc tính của trường
Cách 1: Trong giao diện thiết kế câu truy vấn kích chuột vào trường muốn thay đổi thuộc tính
Tab Design Group Show/Hide Property Sheet
Trước khi loại bỏ trùng lặp Sau khi loại bỏ trùng lặp
Trang 1616
Cách 2: Kích chuột phải tại trường muốn thay đổi thuộc tính chọn Properties…
Xuất hiện cửa sổ Property Sheet là danh sách các thuộc tính của trường:
Trên tab General có một số thuộc tính hay dùng:
a Format (Xem trong phần bảng)
b Tạo nhãn cho trường (Caption)
Tạo nhãn cho trường chính là thay đổi định dạng hiển thị của tên trường Với caption cho phép gõ chữ Tiếng Việt có dấu Điều này giúp cho việc đọc dữ liệu dễ dàng hơn mà không làm ảnh hưởng đến tên của trường cũng như kiểu dữ liệu của trường đó
1.3.6 Tạo trường tính toán trong query
Để làm được các phép tính trong một truy vấn, bạn tạo một trường tính toán mới trong Query Tên của trường tính toán không trùng với tên của các trường trong bảng
Trang 1717
Cú pháp:
Tên trường : Biểu thức tính toán
Ví dụ: Hiển thị thông tin của các mặt hàng, thêm trường Thành tiền = Số lượng * Đơn giá
1.3.7 Một số hàm thường dùng và cửa sổ Expression Builder
a Một số hàm thường dùng
Left(Xâu ký tự, n) Lấy n ký tự bên trái xâu Left(“xuân”,2)= xu
Right(Xâu ký tự, n) Lấy n ký tự bên phải xâu Right(“xuân”,2)= ân
Mid(Xâu ký tự, s, n) Lấy n ký tự trong xâu bắt
đầu từ vị trí s Mid(“HCPP03”,3,2) = PP
Month(Giá trị ngày) Trả về tháng của giá trị ngày Month(#15/4/06#) = 4
IIf(BT logic, gt đúng, gt sai)
Datepart(“phần cần lấy”, Giá
trị ngày)
Giá trị trả về tùy thuộc vào phần cần lấy, xem phía dưới
Datepart(“q”, #15/4/06#)=2 (tháng 4 thuộc quý 2)
Các trường lấy từ các bảng Trường tính toán
Trang 18ww: thứ tự tuần trong năm
d: day – ngày trong tháng
- Trong cửa sổ thiết kế query
- Click nút Builder trong Group Query Setup
- Xuất hiện cửa sổ Expression Builder
Khung để tạo biểu thức
Các đối tượng trong
Trang 1919
Để chọn các Trường đưa vào biểu thức ta mở mục Database bằng cách click đúpvào tên CSDL hiện hành, chọn Table hoặc Query Các trường trong table hoặc query sẽ hiển thị trong khung Expression Categories, click đúp để chọn tên trường đưa vào biểu thức
Để chọn hàm bạn chọn mục Function Built – In Funtions
c Ví dụ
Xem thông tin về các khách hàng, trong đó thêm 1 trường Loại KH ghi khách hàng đó thuộc loại nào : KL → Khách lẻ, CH → Cửa hàng
- Bảng: KhachHang
- Trường: MaKH, TenKH, DiaChi, LoaiKH (Trường mới)
- Giao diện thiết kế
1.4 TOTAL QUERY
1.4.1 Khái niệm
Total Query là câu truy vấn tính toán gộp nhóm Các hàm Count, Sum, Min, Max, Avg là các hàm
cơ bản trong Total Query
Dấu hiệu nhận biết một câu Total Query là trong câu thường xuất hiện các từ: mỗi, từng, theo mỗi, theo từng, và theo mỗi, theo từng cái gì thì ta sẽ gộp nhóm theo cái đó
Ví dụ: Tính số mặt hàng theo từng loại hàng
Ta có:
- Kết quả của câu truy vấn trước khi tổng hợp dữ liệu:
Trang 2020
- Sau khi tổng hợp dữ liệu ta có kết quả:
1.4.2 Cách tạo Total Query
Để tạo một Total query, bạn thực hiện các bước sau:
Tạo một query mới bằng Design view
- Chọn các Table cần sử dụng trong câu truy vấn từ cửa sổ Show Table
- Chọn các trường chứa dữ liệu cần thống kê vào lưới thiết kế
- Chọn Tab Design Group Show/Hide Totals
- Trên lưới thiết kế query xuất hiện thêm dòng Total
Nhóm theo Đếm dòng trên
Có 2 mặt hàng thuộc loại Bia
Có 4 mặt hàng thuộc loại Bút máy
Trang 2121
- Tại mỗi trường, chọn các tùy chọn trên dòng Total
1.4.3 Các tùy chọn trên dòng Total
1.4.4 Một số chú ý khi làm với những câu Tính trung bình
Ví dụ 1: Đếm số lần mua hàng của mỗi khách hàng trong quý 1
- Bảng: KhachHang, HoaDon
- Trường: MaKH, TenKH, SoLanMua (trường mới), Quy (trường mới)
Trang 2222
- Giao diện thiết kế
- Giao diện kết quả
Ví dụ 2: Tính tổng số mặt hàng của từng loại hàng và giá bán trung bình trên 1 mặt hàng của từng loại hàng?
Phân tích:
Giá bán trung bình trên 1 mặt hàng = (Tổng giá bán của các mặt hàng đó) / (số mặt hàng)
Trang 2323
- Bảng: LoaiHang, HangHoa
- Trường: MaLoai, TenLoai, TenHang, Dongia
- Giao diện thiết kế
- Giao diện kết quả
Ví dụ 3: Tính số lượng bán ra trung bình trên 1 lượt mua hàng theo từng mặt hàng?
Phân tích:
Số lượng bán ra trung bình trên 1 lượt mua hàng = (Tổng số mặt hàng bán trong tất cả các hóa đơn) / (số hóa đơn) vì: 1 lượt mua hàng được thể hiện bằng 1 hóa đơn
- Bảng: HoaDon, HangHoa, CT_HoaDon
- Trường: TenHang, SoHD, Soluong
- Giao diện thiết kế
Trang 2424
1.4.5 Từ khóa Where
Là cách giới hạn (lọc) các bản ghi trước khi đưa chúng vào tính tổng gộp Khi đó ta chọn Where trong dòng Total rồi nhập điều kiện lọc ở dòng Criteria
Ví dụ câu 50 Tính tổng số lượng hàng theo từng mặt hàng có số lượng mua từ 15 trở lên
Phân tích câu hỏi ta thấy:
- Trước hết, ta phải lọc ra những mặt hàng có số lượng mua từ 15 trở lên
- Sau đó mới thực hiện tính tổng trên các mặt hàng mà ta đã lọc ra ở bước trước
Trong trường hợp này, ta phải thiết kế câu truy vấn như hình dưới đây
Trang 25Phân tích: Trường Giảm giá sẽ được xây dựng dựa vào trường Tổng tiền (của mỗi hóa đơn) Hiển nhiên, để tính được Tổng tiền của mỗi hóa đơn thì ta phải tính toán gộp nhóm theo SoHD (cụ thể là dùng hàm SUM)
Do vậy, trường giảm giá được xây dựng dựa trên một trường có tính toán gộp nhóm
Trong phần Total của trường Giảm giá ta để Expression
Tườn tự với trường Thực trả, ta cũng phải để là Expression
Ta thiết kế như sau:
1.4.7 Khi nào thì phải tách thành hai câu truy vấn?
Các bạn theo dõi các ví dụ sau để thấy được câu trả lời!
Câu 41: Hãy cho biết có bao nhiêu nhân viên bán hàng trong quý 2?
Phân tích:
- Theo các bạn kết quả của câu truy vấn sẽ trả về là 1 bảng hay 1 giá trị ?
Trang 2626
- Câu trả lời, đó là 1 giá trị (5 nhân viên) !
Vì vậy để được kết quả là con số 5 thì bước trước đó bạn phải đưa ra được danh sách các nhân viên bán hàng trong quý 2
Bước 1 : Bạn sẽ thiết kế như sau:
(Với trường Quy bạn có thể không tích chọn phần Show)
Ta có kết quả :
? 5
Trang 2727
- Bước 2 : Tại sao có sự trùng lặp này ?? Đó là vì mỗi NV có thể bán nhiều (lập nhiều) hóa
đơn trong quý 2 Đây là kết quả không mong muốn Vì vậy ta phải loại bỏ những giá trị trùng
lặp bằng cách thay đổi thuộc tính Unique Values trong thuộc tính của Query từ No Yes
Lúc đó kết quả sẽ là :
Đến đây, nếu ta muốn đếm số NV ta dùng Total Query, tại dòng Total trong lưới thiết kế sử dụng hàm Count trên trường MaNV (hoặc TenNV) khi đó kết quả trả về là chính là tổng
số bản ghi khi mà ta chưa loại bỏ giá trị trùng lặp ! Kết quả này là SAI !
- Bước 3 : Lưu câu truy vấn sau khi đã hoàn thành xong bước 2, giả sử ta đặt tên là q_41a
- Bước 4 : Xây dựng một câu truy vấn mới sử dụng câu truy vấn q_41a
Khi tạo câu truy vấn mới, xuất hiện cửa sổ Show Table chọn Tab Queries q_41a
Sau đó ta thiết kế câu truy vấn như sau:
Trang 2828
Cuối cùng ta sẽ được kết quả mong muốn!
Tóm lại: Phải tách thành 2 câu truy vấn:
q_41a Hiển thị danh sách nhân viên bán hàng trong quý 2 Loại bỏ bản ghi trùng lặp! q_41b Đếm số nhân viên dựa vào câu q_41a
1.5 CROSSTAB QUERY
1.5.1 Khái niệm
Câu truy vấn dạng Crosstab là một câu truy vấn dùng để tổng hợp dữ liệu dưới dạng bảng tính hai chiều, trong đó giá trị của một trường được đưa lên làm tiêu đề của cột Phần thân của bảng tính là
dữ liệu được thống kê bởi các hàm: Sum, Count, Avg, Min, Max
Ví dụ: Tính tổng số lượng hàng bán theo từng mặt hàng theo từng tháng
Trang 2929
1.5.2 Cách tạo
- Một trường để lấy giá trị làm tiêu đề cho cột gọi là Column Heading (có duy nhất 1 Column
Heading)
- Một trường (hoặc nhiều trường) để lấy giá trị làm tiêu đề cho dòng gọi là Row Heading (có
thể có 1 hoặc nhiều Row Heading)
- Một trường chứa dữ liệu thống kê (Value) (Có duy nhất 1 Value)
Để tạo một Crosstab query bằng Design View ta thực hiện như sau:
Columns Heading: Giá trị của của trường Tháng được đưa lên làm tiêu đề cột
ValueRow Heading