query trong access

49
Chương 3 TRUY VẤN DỮ LIỆU (QUERY)

Upload: quevinh

Post on 20-Jun-2015

525 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Query trong access

Chương 3

TRUY VẤN DỮ LIỆU

(QUERY)

Page 2: Query trong access

? 1. Vấn Đề

Page 3: Query trong access

1. Muốn biết một hoá đơn bán hàng của khách hàng nào (tên khách hàng) và do nhân viên nào bán (tên nhân viên).

Select QQLBH

Page 4: Query trong access

2. Tìm tên và địa chỉ các khách hàng mua hàng trước ngày 1/1/2004

Select Q QLBH

Page 5: Query trong access

3. Ghép Hokh và TenKh thành cột họvàtên.

Select Q QLBH

Page 6: Query trong access

4. Tính tiền chi tiết cho từng hóa đơn (SoHDB, MaMH, SoLuong, DonGiaBan, ThanhTien):

Select Q QLBH

Page 7: Query trong access

5. Tính thành tiền cho từng hóa đơn (nhóm dữ liệu)

QLBH

Group by

Sum

Page 8: Query trong access

6. Thống kê khách hàng mua hàng hóa nào với số lượng bao nhiêu?

To Crosstab Q

QLBH

Page 9: Query trong access

7. Tạo Table từ các thông tin tìm kiếm được.

Ví dụ:? Muốn tạo Table gồm các thuộc tính

KHACHMUA(SoHDB,HoTenKH,HoTenNV)

QLBH

Page 10: Query trong access

8. Sửa đơn giá bán của mặt hàng Cam lên 10%.

9. Xoá tất cả các mặt hàng do nhà cung cấp Bitis cung cấp.

QLBH

Page 11: Query trong access

2. CÁC LOẠI TRUY VẤN

Page 12: Query trong access

I. Nhóm truy vấn xử lý dữ liệu (không làm thay đổi dữ liệu trên table):

Truy vấn chọn (Select Query) Nhóm dữ liệu Truy vấn có tham số

Truy vấn chéo (Crosstab Query)II. Nhóm truy vấn hành động-Action

Query(làm thay đổi dữ liệu trên Table): Truy vấn tạo bảng (Make-Table Query) Truy vấn cập nhật (Update Query) Truy vấn thêm (Append Query) Truy vấn xóa (Delete Query)

2. CÁC LOẠI TRUY VẤN

Page 13: Query trong access

2.1. Truy vấn chọn lựa (Select Query):

2.1.1. Công dụng: Chọn lựa, rút trích dữ liệu trên một số cột của một hay nhiều bảng theo một điều kiện nào đó (có thể có điều kiện hoặc không). Trên truy vấn chọn lựa, có thể:

- Tính toán - Nhóm dữ liệu (Group)

Điều kiện có thể tĩnh hoặc động. Khi điều kiện là động người ta còn gọi là truy vấn có tham số.

Page 14: Query trong access

2.1.2. Các bước tạo truy vấn lựa chọn1 (Select Query)

B1. -> Query -> New->Design View -> OK

B2. Đưa các bảng (table) hoặc các truy vấn (query)

liên quan đến các dữ liệu truy vấn vào cửa sổ

truy vấn bằng cách đúp vào tên bảng. ( mục

Table trong lưới QBE)

B3. Xác định tên các cột cần xuất hiện trong kết

quả truy vấn bằng cách đúp vào tên trường.

(mục Field trong lưới QBE)

Page 15: Query trong access

Các bước tạo truy vấn lựa chọn2 (Select Query)

B4. Khai báo các thành phần của lưới QBE:

- Sort: - Ascending: Xếp dữ liệu tăng dần.

- Descending: Xếp dữ liệu giảm dần.

- Not sorted: Không sắp xếp.

- Show: - : Cho hiện cột.

- : Không cho hiện cột.

Page 16: Query trong access

- Criteria: - Điều kiện lọc dữ liệu (nếu có yêu cầu).

Chú ý:

- Điều kiện lọc đặt vào hàng Criteria và các hàng dưới.

- Điều kiện hoặc giưã các cột: đặt trên những hàng

khác nhau.

- Điều kiện và giưã các cột: đặt trên cùng 1 hàng.

- Dùng các toán tử.

B5. Lưu bảng truy vấn: Ctrl + S hay File -> Save

Các bước tạo truy vấn lựa chọn3 (Select Query) (tt)

Page 17: Query trong access

Một số thao tác thường dùng

- Xem trước kết quả truy vấn:

(menu View -> Datasheet view)

- Trở lại cửa sổ truy vấn:(menu View -> Design View)

- Thực hiện một truy vấn: (menu Query -> Run)

Page 18: Query trong access

2.1.3. Ví dụ tạo truy vấn chọn lựa (Select Query)1

Tạo Query giải quyết các yêu cầu sau:1. Muốn biết một hoá đơn bán hàng của

khách hàng nào (tên khách hàng) và do nhân viên nào bán (tên nhân viên).

2. Liệt kê danh sách khách mua hàng (HọKH, TênKH, Địa chỉ, Điện thoại, Họ tên NV, Số HD bán, Ngày bán, Tên MH, Số lượng, Đơn giá), sắp xếp theo tênKH, nếu tên trùng nhau thì sắp xếp theo họ.

3. Lập danh sách nhân viên có giới tính là nữ4. Tìm tên và địa chỉ các khách hàng có giới

tính là nam mua hàng trước ngày 1/1/2004

Page 19: Query trong access

2.1.3. Ví dụ tạo truy vấn chọn lựa (Select Query)2

5. Ghép Hokh và TenKh thành cột họvàtên.

6. Tính tiền chi tiết cho từng hóa đơn (SoHDB, MaMH, SoLuong, DonGiaBan, ThanhTien)

Page 20: Query trong access

Tạo một cột mới

Tên cột mới : biểu thức Ví dụ1: Họ và tên: [HoKH] & [TênKH]Ví dụ 2: Thành tiền :

[SoLuong]*[DonGiaBan]

Page 21: Query trong access

Một số toán tử được sử dụng trong biểu thức truy

vấn1

Các toán tử so sánh: =, < >, >, <, >=, <=Giữa hai giá trị: Between … and…

Ví dụ: giá trị từ 20 đến 30: Between 20 and 30

hay: >=20 and <= 30

Page 22: Query trong access

Một số toán tử được sử dụng trong biểu thức truy

vấn2

Các hàm ngày, tháng, năm:Ngày = 26/10/2004Day([ngày]) = 26Month([ngày]) = 10Year([ngày]) = 2004

DatePart(‘q’, [Ngày]) = 4 (quý)DatePart(‘m’, [Ngày]) =10 (tháng)DatePart(‘yyyy’, [Ngày]) = 2004 (năm)

Page 23: Query trong access

Một số toán tử được sử dụng trong biểu thức truy

vấn3

Đúng với mẫu đưa ra: LikeVí dụ:

Like“40*”: tất cả những chuỗi có hai ký tự đầu là 40.

Like“???C*”: tất cả những chuỗi có ký tự thứ 4 là C.

Các toán tử logic: and, or, not

Các phép toán số học: +, -, *, /,^(lũythừa), Mod

Page 24: Query trong access

Một số toán tử được sử dụng trong biểu thức truy

vấn3

Tên trường đặt giữa hai dấu ngoặc vuông:

[tên trường]

Ví dụ: [MaKH]

Dữ liệu kiểu ngày đặt giữa hai dấu # và #:

#25/09/75#

Page 25: Query trong access

Một số toán tử được sử dụng trong biểu thức truy

vấn4

Nối hai chuỗi ký tự: &

Ví dụ: Nối trường HọKH và trường

TênKH thành trường HọTenKH

HoTenKH = [HoKH] & [TenKH]

Page 26: Query trong access

Một số toán tử được sử dụng trong biểu thức truy

vấn5

Câu lệnh điều kiện:

iif(điềukiện, kếtquảcủađiềukiệnđúng, kếtquảcủađiềukiệnsai)

Vd1: iif([GioiTinh]=Yes, “NU”, “NAM”)

Vd2: iif([DonGiaBan])>100000, [DonGiaBan]*1.2,

[DonGiaBan])

Page 27: Query trong access

2.2. Nhóm dữ liệu (Group)

Page 28: Query trong access

2.2.1. NHÓM DỮ LIỆU Ý nghĩa-Cách thực hiện

Ta có thể tính toán dữ liệu theo từng nhóm có tính chất tổng cộng, thống kê tổng hợp số liệu mà không quan tâm đến chi tiết số liệu bên trong. Cách thực hiện như sau:

- ViewTotals để chèn thêm dòng Total vào vùng lưới QBE.

- Dùng các hàm tính toán ở dòng Total để thực hiện các phép tính cho các cột trong truy vấn:

Page 29: Query trong access

Hàm Ý nghĩa

Group by Nhóm dữ liệu trên cột này

Avg Tính trung bình cho cột này (số)

Sum Tính tổng

Count Đếm tổng số

Min Tìm giá trị nhỏ nhất

Max Tìm giá trị lớn nhất

First Tìm giá trị đầu tiên

Last Tìm giá trị cuối cùng

Expression

Biểu thức tính toán từ các cột dữ liệu khác trong bảng

Where Điều kiện lọc dữ liệu cho truy vấnKhông được phép hiện cột này lên

Page 30: Query trong access

2.2.2. Ví dụ nhóm dữ liệu1

Vd1: Tính thành tiền cho từng hóa đơn (SoHD, ThanhTien) Vd2: Hãy liệt kê toàn bộ khách hàng và tổng số hoá đơn của mỗi khách hàng (MãKH, Tông số HD).

??? Nếu chỉ liệt kê (TênKH, Tổng số HD) thì điều gì xảy ra ?

Page 31: Query trong access

2.2.2. Ví dụ nhóm dữ liệu2

Vd3: Liệt kê mỗi khách hàng trong từng quí của năm 2004 đã mua bao nhiêu hàng hóa.Vd4: Liệt kê mỗi khách hàng nếu phân theo từng loại hàng hóa thì đã mua bao nhiêu hàng hóa trước ngày 1/1/2002.

Page 32: Query trong access

2.3. Tham số trong truy vấn

Query có tham số

Page 33: Query trong access

2.3.1. Tham số trong truy vấn

Thực hiện các truy vấn theo một điều kiện “động” nào đó. (do người dùng nhập)Ví dụ: Hiển thị các thông tin của nhân viên với mã nhân viên nhập vào từ bàn phím.

Hiển thị các thông tin của nhân viên có mã số là 05. (điều kiện “tĩnh”)

Page 34: Query trong access

2.3.2. Cách tạo tham số trong truy vấn

Nhập dòng thông báo nhắc nhập trong hai dấu ngoặc vuông [ và ] vào dòng điều kiện (Criteria) tại cột ta muốn lọc.Có thể dùng các toán tử, nhập nhiều tham số cho một hoặc nhiều cột. (như nhập điều kiện lọc tĩnh)

Vd1: Hiển thị các thông tin của nhân viên với mã nhân viên nhập vào từ bàn phím.

Vd2: Lập danh sách các khách hàng mua hàng trong khoảng thời gian nào đó do người dùng nhập vào.

Query có tham số

Page 35: Query trong access

2.4. Tạo Truy vấn chéo(Crosstab Query)

Page 36: Query trong access

2.4.1. Truy vấn chéo (Crosstab Query):

Sử dụng dạng truy vấn này khi muốn thống kê, tổng hợp các dữ liệu theo dạng nằm ngang dù các dữ liệu được lưu trong bảng dưới dạng từng dòng:

Page 37: Query trong access

2.4.1. Truy vấn chéo (Crosstab Query)2:

Row heading

Column heading

Value

Ví dụ 1: Thống kê khách hàng mua hàng hóa nào với số lượng bao nhiêu?

QLBH

Page 38: Query trong access

2.4.2. Cách tạo truy vấn chéo:

B1: New/Design view và chọn các Table chứa dữ liệu nguồnB2: Query/Crosstab Query: Khai báo các dòng: như Select Query Crosstab:

Row heading: cột này làm giá trị trên hàng. Column heading: cột này làm giá trị trên cột Value: cột này làm giá trị cho bảng No shown: không cho hiện cột này.

Ví dụ 1: Thống kê khách hàng mua hàng hóa nào với số lượng bao nhiêu?

Page 39: Query trong access

Lưu ý: Có thể có nhiều cột làm Row heading, nhưng chỉ một cột duy nhất làm Column heading, một cột duy nhất làm Value.

Ví dụ:

Page 40: Query trong access

2.4.3. Truy vấn chéo – Ví dụ

Có thể có nhiều cột làm Row heading, nhưng chỉ một cột duy nhất làm Column heading, một cột duy nhất làm Value.

Ví dụ:

Page 41: Query trong access

2.5. Tạo truy vấn hành động

(Action Query)

Page 42: Query trong access

2.5.1. Truy vấn tạo bảng(Make-Table Query)

Dùng Make-Table Query để: chép kết quả truy vấn của loại

Select Query ra một Table mới. chép kết quả truy vấn của loại

Crosstab Query ra một Table mới nhưng dưới dạng Select Query (Group).Chú ý: Bảng mới tạo ra không có

khóa.

Page 43: Query trong access

Các bước tạo truy vấn tạo bảng: (Make-Table Query): B1: Tạo như Select Query. B2: Query Make-Table Query:

1. Gõ vào tên Table được tạo ra

2. Đặt Table mới này trong tập tin

cơ sở dữ liệu hiện hành

3. Xác định xong

2. Đặt Table mới này bên trong một tập tin cơ sở dữ liệu khác

Chọn QueryRun để thực hiện tạo table mới.

Page 44: Query trong access

2.5.2. Tạo truy vấn xoá(Delete Query)

Dùng Delete Query để: Xóa các dòng dữ liệu thoả điều kiện

nào đó trong một hay nhiều bảng. Cẩn thận: không thể phục hồi sau khi xoá.

Page 45: Query trong access

Các bước tạo truy vấn xoá bảng: (Delete Query):

B1. -> Query -> New->Design View ->

OK

B2. Chọn bảng (table) chứa dữ liệu muốn

xóa.

B3. Query Delete Query: xuất hiện dòng Delete

- Xoá các bản ghi: drag dấu * từ bảng vào

lưới: từ Form xuất hiện ở hàng Delete.

- Xoá có điều kiện: Double Click vào tên cột

tham gia vào điều kiện: từ Where sẽ xuất hiện

trên hàng Delete. Khai báo điều kiện như trong

Select Query.

Chọn QueryRun để thực hiện xoá các bản ghi.

Page 46: Query trong access

2.5.3. Tạo truy vấn thêm(Append Query)

Thêm dữ liệu từ bảng này vào bảng khác.

Page 47: Query trong access

Các bước tạo truy vấn thêm: (Append Query):

B1: Tạo như Select Query.B2: Query Append Query:

1. Gõ tên Table muốn chép

dữ liệu đến (Table đích)

2. Nếu Table đích ở trong tập tin

cơ sở dữ liệu hiện hành

3. Xác định xong 2. Nếu Table đích trong tập tin cơ sở dữ liệu khác

Chọn QueryRun để thực hiện thêm dữ liệu.

Page 48: Query trong access

2.5.4. Tạo truy vấn sửa(Update Query)

Các bước tạo truy vấn sửa: B1: Tạo như Select Query. B2: QueryUpdate Query: Xuất hiện dòng

Update To Trong ô Update To của các thuộc tính muốn

cập nhật: điền vào giá trị hay biểu thức dùng để thay đổi nội dung.

Chọn QueryRun để thực hiện việc sửa.

Page 49: Query trong access

Relationship bài toán quản lý khách hàng

Crosstab Query