Tải bản đầy đủ (.pdf) (43 trang)

access 2010 giao trinh cau truy van query

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.22 MB, 43 trang )

1. QUERIES
1.1. Khái niệm
Query (truy vấn) cho phép xử lý dữ liệu được lưu trong các bảng nhằm đáp ứng các yêu cầu thông
tin.
Gồm các loại query:
- 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án
thô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.
ii.
iii.
iv.

Bảng chứa các trường xuất hiện trong bảng kết quả
Bảng chứa các trường dùng làm điều kiện
Bảng chứa các trường tham gia vào biểu thức tính toán
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.

1


- 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:
Các trường

Table/Query pane

Lưới QBE

- 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.

2


Group Queries

- 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.

Cửa sổ thiết kế
Query
Cửa sổ Show Table

- 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

3


- 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.

4


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.

5


1.3. SELECT QUERY
1.3.1. Khái niệm

Select query: là loại truy vấn đơn giản, trả về số các bản ghi dựa trên tiêu chuẩn chỉ định. Trong
nhiều trường hợp, loại truy vấn này tương tự như một filter (xem phần tạo bảng).
Trong loại câu truy vấn này chúng ta có thể cập nhật thông tin trực tiếp vào bảng thông qua bảng
kết quả câu truy vấn.

1.3.2. Cách tạo
(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ả

6


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ả

7



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ụ

Text

Đặt trong cặp dấu “...”

“Tiếng Anh văn phòng”

Date

Đặt trong cặp dấu # #

#1/1/2003#

Number

10

b. Toán tử được sử dụng trong biểu thức điều kiện

Toán tử

Ví dụ


<

Số lượng nhỏ hơn 10

<=

Số lượng nhỏ hơn hoặc bằng 10

>

Trước ngày 2/3/2003

Thể hiện

8


>=

Đơn giá > 2000

< > (khác)

Không thuộc loại Vở

Between gt1 And gt2

Số lượng mua từ 13 đến 20


Hoặc
>= gt1 And <= gt2

In(gt1, gt2,…)

Loại hàng là bia hoặc rượu
hoặc vở

c. Dùng ký tự đại diện
Trong trường hợp không nhớ chính xác điều kiện lọc hoặc muốn thay thế một tập các giá trị có
những đặc điểm chung, gần giống nhau ta sử dụng các kí tự đại diện.
Khi sử dụng kí tự đại diện ta phải dùng từ khóa LIKE.
Ký tự đại

Ví dụ

Thể hiện

diện
*

Thay thế cho nhiều ký tự

?

Thay thế cho 1 ký tự

[DS ký tự]

Nhận một ký tự trong dãy


[kt1 – kt2]

1 ký tự thuộc miền

Mã khách hàng bắt đầu bằng CH

Like “CH*”

Mã hàng có mã từ HH001  Like “HH00[1-5]”
HH005

d. Toán tử AND, OR
Khi 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:

9


- 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

10


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:

11


Một số thuộc tính hay dùng:
a. Top value
Chức năng Top Value được sử dụng để hiển thị những bản ghi trên cùng của danh sách được tạo
ra bởi một truy vấn.
Cách thực hiện:
- 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

12


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ế

13


- 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.

14


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ả
Trước khi loại bỏ trùng lặp

Sau khi loại bỏ trùng lặp

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

15


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.

16



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á.

Các trường lấy từ các bảng

Trường tính toán

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

Hàm

Ý nghĩa

Ví dụ

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

Len(Xâu ký tự)

Trả về độ dài xâu

Len(“xuân”) = 4

Month(Giá trị ngày)

Trả về tháng của giá trị ngày

Month(#15/4/06#) = 4

Datepart(“phần cần lấy”, Giá

Giá trị trả về tùy thuộc vào

Datepart(“q”, #15/4/06#)=2

trị ngày)

phần cần lấy, xem phía dưới

(tháng 4 thuộc quý 2)


IIf(BT logic, gt đúng, gt sai)

17


Trong đó phần cần lấy của hàm Datepart là:
q: quarter – quý
yyyy: year – năm
m: month – tháng
ww: thứ tự tuần trong năm
d: day – ngày trong tháng
w: thứ trong tuần
Y: số thứ tự ngày trong năm
b. Sử dụng Expresstion Builder
Expression Builder là một công cụ để giúp bạn tạo các biểu thức nhanh, chuẩn xác và dễ dàng hơn
bằng cách truy cập vào thư viện hàm của Access. Để sử dụng Expression Builder để xây dựng một
biểu thức điều kiện hoặc tạo một trường mới trong Query ta thực hiện như sau:
- 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 nhóm hàm

Các hàm

Các đối tượng trong
CSDL
Các hàm có sẵn trong

thư viện Access

CSDL đang làm việc

18


 Để 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:

19



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

- 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.

20


- 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)

21


- 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)

22


- 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ế

23


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

24


Chú ý : Việc chọn lọc các bản ghi trước và sau khi gộp nhóm chỉ có ý nghĩa nếu như trường
cần đặt điều kiện lọc có tham gia vào hàm gộp nhóm.

1.4.6. Từ khóa Expression
Nếu bạn tạo ra một trường mà được xây dựng dựa trên trường có tính toán gộp nhóm. Khi đó,
trong phần Total các bạn phải để là Expression.
Ví dụ câu 56 (hoặc 57): Hãy cho biết Số hóa đơn, Tổng số tiền của mỗi hóa đơn, Tổng số tiền
giảm giá của mỗi hóa đơn, Tổng số tiền thực trả của mỗi hóa đơn. Biết nếu tổng giá trị mua
của một hóa đơn từ 100.000 trở lên thì được giảm 10% tổng số tiền của hóa đơn đó.
Phâ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ị ?

25


×