4. CÁC HÌNH THỨC HỌC TẬP CHÍNH TRONG MƠNHỌC
5.1 Giới thiệu QUERY
5.1.1 Chức năng 5.1.2 Dạng thức
5.2 Thiết kế QUERY
5.2.1 QUERY đơn (SELECT QUERY ) 5.2.2 Lập tiêu chuẩn lựa chọn trong query 5.2.2 Lập tiêu chuẩn lựa chọn trong query 5.2.3 Sử dụng Field tính tốn trong query 5.2.4 Dùng dịng total để nhĩm các dịng 5.3 QUERY tổng hợp
5.3.1 Query cĩ thơng số (PARAMETER QUERY) 5.3.2 CROSSTAB QUERY 5.3.2 CROSSTAB QUERY
5.3.3 SUB QUERY
5.3.4 MAKE TABLE QUERY 5.3.5 UPDATE QUERY 5.3.5 UPDATE QUERY 5.3.6 DELETE QUERY 5.3.7 UNION QUERY
5.1 Giới thiệu QUERY 5.1.1 Chức năng
- Query Là một cơng cụ dùng để xử lý dữ liệu trong Access, nĩ cĩ thể đáp ứng nhu cầu tra cứu dữ liệu từ nhiều bảng của CƠ SỞ DỮ LIỆU. Từ cách thức đặt câu hỏi và các mối quan hệ được thiết lập. Access sẽ rút ra những thơng tin cần thiết theo yêu cầu.
- Bảng kết quả của một Query gọi là Dynaset. Một Dynaset khơng phải là một bảng dữ liệu thực sự nhưng trong một số trường hợp nĩ cĩ thể tác động thay đổi dữ liệu ngược lại lên Table
5.1.2 Dạng thức
Cĩ rất nhiều kiểu Query trong Access. Tùy từng trường hợp cụ thể mà ta chọn loại Query phù hợp
1) Select query (Query truy vấn dữ liệu): loại Query này được sử dụng rất phổ biến,
nĩ được dùng nhằm để chọn lựa ra các mẫu tin thoả mãn một điều kiện nào đĩ, ngồi ra cịn cho phép tạo thêm các field tính tốn và kết nhĩm số liệu
2) Update Query (Query cập nhật số liệu): dùng để thay đổi dữ liệu đồng loạt trên một hay nhiều dịng của một hay nhiều bảng. Ví dụ muốn sửa điểm anh văn cho các sinh viên cĩ tham dự kỳ thi học kỳ 2 thuộc lớp tin học
3) Delete Query (Query xố dữ liệu ): xố một hay nhiều mẩu tin từ nhiều bảng. Ví
dụ: ta cĩ thể dùng delete Query để xố danh sách các sinh viên đã nghỉ học của một lớp hay tồn trường
4) Find Duplicate Query : Query tìm các mẩu tin trùng dữ liệu với nhau trong một bảng. Ví dụ: tìm tất cả các sinh viên cĩ họ tên trùng nhau thì sử dụng Find Duplicate Query.
5) Find Unmatched Quer (Query tìm các mẫu tin khơng khớp với nhau): tìm trong
bảng này những mẫu tin mà mà giá trị của một field nào đĩ mà giá trị khơng trùng khớp giá trị với bất cứ mẫu tin nào khác trong bảng thứ hai. Giả sử vì một lý do nào đĩ mà khi ta nhập điểm mơn học của sinh viên, ta nhập khơng đúng mã sinh viên của một sinh viên. Do đĩ, khi in ra bảng điểm vì khơng tìm được mã sinh viên tương ứng trong Table sinh viên nên cột họ
và tên bị trống. Để biết được dữ liệu gõ sai thuộc sinh viên nào, ta sử dụng Find Unmatched Query.
6) Crosstab Query (Query Tham chiếu chéo): dùng để kết nhĩm dữ liệu theo một chỉ
tiêu nào đĩ. Nĩ giúp ta tổng hợp số liệu từ một đến nhiều chỉ tiêu theo hàng, trên mỗi hàng lại tổng hợp một (chỉ một) chỉ tiêu khác theo cột, vùng giao nhau giữa cột và hàng thì thể hiện trị số tổng hợp của một (Chỉ một) chỉ tiêu thứ 3
Ví dụ: yêu cầu cho biết số lượng vật tư nhập xuất trong mỗi ngày cụ thể là bao nhiêu, bên cạnh số tổng vật tư đĩ cịn phải cho biết đĩ là những vật tư nào. Kết quả của Crosstab Query trả về như sau:
Ngay TotalOFSOL G M H1 MH 2 MH 3 MH 4 01/05/97 32 1 2 20 02/05/97 60 60 03/05/97 20 10 10 07/05/97 2 2 08/05/97 27 7 20 09/05/97 10 10
7) Append Query (Query nối số liệu): nối thêm số liệu từ một hoặc nhiều bảng
8) Make Table Query (Query tạo bảng): dùng để lập các bảng dự phịng, trích rút dữ
liệu từ một Table để lưu trữ trước khi xố các mẫu tin này ra khỏi Table hiện hành.
9) Union Query (Query hợp số liệu): gom, nối đuơi số liệu từ hai hay nhiều bảng thành một danh sách để xem chung
10) Data Define Query (Query định nghĩa dữ kiện): sử dụng lệnh của ngơn ngữ SQL
để tạo hoặc sửa đổi cấu trúc của một bảng.
5.1.3 CÁC TỐN TỬ 1) Tốn tử số học 1) Tốn tử số học To án tử Ý nghĩa Ví dụ Kết quả ^ Lũy Thừa 5^3 125 * Nhân 5*3 15 / Chia 7/2 3.5
\ Chia lấy phần nguyên 7\2 3
Mod Chia lấy phần dư 7Mod2 1
+ Cộng 7+2 9
2) Tốn tử ghép To
án tử
Ý nghĩa Ví dụ Kết quả
& Ghép chuổi hoặc số với nhau
“Tin”&”Học”
100 & “năm cơ đơn” “hơm nay” &Date()
“phim” &202/2 &”chĩ đốm
Tin Học 100 nămcơ đơn hơm nay:21/11/2004 phim 101 chĩ đốm + Cộng hoặc ghép chuổi 1234 +5678
“cuốn theo” + “ Chiều giĩ” 1001 + “tình huống”
6912cuốn theo chiều giĩ
Type miss match
3) Tốn tử so sánh Tố n tử Ý nghĩa Ví dụ Kết quả < Nhỏ hơn 2<3 True <= Nhỏ hơn hoặc bằng 2<=3 False > Lớn hơn 2>3 False >= Lớn hơn hoặc bằng 3>=3 True = Bằng 5=2 False < > Khác 5<>2 True 4) Tốn tử so sánh đặc biệt Tốn tử Ý nghĩa Giải thích
Is Chính là Opject này chính là Object kia
In Thuộc về, rơivào trong [Software] In (“Windows”,”Word”,”Excel”) Weekday([Ngay]) In (2,4,6) Tốn tử In chỉ dùng trong ngơn ngữ SQL Between … And Thuộc trong khoảng
[Diem] Between 0 and 10
[Ngay] between #01/10/1998# And #21/10/1998# Like Hao hao giống Biểu thức sử dụng tốn tử Like thường sử dụng những
Kí tự đại diện:
* : Thay thế cho một chuỗi ký tự bất kỳ ? : Thay thế cho một ký tự bất kỳ #: Thay thế cho một ký số bất kỳ
ví dụ:
“Hoang Thi Hue” Like “*Hue ” -> True 1997 like :”##9#” -> True
5) Tốn tử logic To
án tử
Ý nghĩa Giải thích
Not Phủ định
And Và Tất cả điều kiện đúng thì kết quảnhận GT đúng Or Hoặc Chỉ cần 1 điều kiện đúng thì kết quả nhận GTđúng Xor Loại trừ A Xor B: A, B khác nhau thì đúng
A đúng B sai thì đúng
II. A sai B đúng thì đúng
A đúng B đúng thì sai A sai B sai thì sai
Eqv Tương hợp A Eqv B : A, B cho kết quả giống nhau thì đúng A đúng B sai thì Sai
A sai B đúng thì sai A đúng B đúng thì đúng A sai B sai thì đúng
Lưu ý:
Muốn truy cập đến một đối tượng thì ta dùng tốn tử: !
Ví dụ: [Form]![Nhap DSNV]![MANV]: truy cập đến Object MANV của Form Nhap DSNV
Muốn truy xuất tới một thuộc tính của Object ta dùng dấu chấm ‘.’ Ví dụ: [MANV].Visible : thuộc tính Visible của đối tượng MANV
Các dấu rào :
”…” : Rào cho giá trị chuỗi […] : Rào tên biến (tên Control)
#….# : Rào giá trị ngày. Ví dụ : Ngaysinh = #11/02/71#
BÀI TẬP THỰC HÀNH
Dựa trên cơ sở dữ liệu bán hàng
1. Thiết kế một query cĩ tên QBT1 liệt kê danh sách các đơn đặt hàng được lập ra trong tháng 2 năm 1992
2. Thiết kế một query cĩ tên QBT2 liệt kê danh sách các đơn đặt hàng được lập cho khách hàng cĩ mã là AGROMAS
3. Thiết kế một query cĩ tên QBT3 thể hiện danh sách các đơn đặt hàng do nhân viên cĩ mã số là 4 lập ra
4. Thiết kế một query cĩ tên QBT4 liệt kê danh sách khách hàng ở cần thơ
5. Thiết kế một query cĩ tên QBT5 liệt kê danh sách các đơn đặt hàng của tất cả các khách hàng ở cần thơ
7. Thiết kế một query cĩ tên QBT7 liệt kê danh sách các đơn đặt hàng cĩ ngày lập đơn đặt hàng và ngày nhận hàng cách nhau khơng quá 60 ngày
8. Thiết kế một query cĩ tên QBT8 liệt kê danh sách các đơn đặt hàng đặt mua mặt hàng rượu hoặc bơ
9. Thiết kế một query cĩ tên QBT9 liệt kê danh sách các khách hàng cĩ 2 ký tự cuối của mã KH là :”CO” ở thành phố Nha Trang
5.2 Thiết kế QUERY
5.2.1 QUERY đơn (SELECT QUERY )
Dịng Field: chứa tên cột của bảng hoặc một biểu thức tính tốn
Dịng Table : chứa tên bảng. Đễ trống khi cột chứa biểu thức tính tốn
Dịng Show : quyết định các field nào hiển thị trong bảng kết quả
Dịng Short :Chỉ định thứ tự sắp xếp các Record kết quả theo nguyên tắc thứ tự sắp xếp các field từ trái sang phải
Dịng Criteria: chỉ định các tiêu chuẩn lựa chọn của Query
Dịng Or :dùng kết hợp các phép tuyển Logic trong lựa chọn
Dịng Sub Total: Dùng để nhĩm các dịng trong kết quả Query
- Sefl Join : là kiểu liên kết một bảng dữ liệu với chính nĩ (Trong Query ta phải thêm một bảng vào 2 lần) trong đĩ một mẫu tin của bảng dữ liệu sẽ liên kết với những mẫu tin của chính bảng này. Khi ấy, tất cả các mẫu tin của bảng mà các giá trị của vùng liên kết bằng nhau đều được đưa vào kết quả của Query
- Chú ý: nếu ta chọn 2 Table tham gia vào Query mà khơng khai báo mối quan hệ giữa chúng, rồi chọn các field từ 2 bảng đưa vào vùng lưới Access sẽ sẽ liên kết dữ liệu một cách khơng cĩ ý nghĩa ta nhận được kết quả sai. Cụ thể Access sẽ lấy tích Decard của 2 bảng này làm kết quả cho Query
5.2.2 Lập tiêu chuẩn lựa chọn trong query
1) Dùng kiểu Text làm tiêu chuẩn chọn lựa
Field Expresstion Decription
ShipCity “London” Trình bày các đơn hàng đến London
ShipCity “London” Or “Hedge End” Trình bày các đơn hàng đến London hoặc Hedge End
ShippedDate Between #1/5/95# and
#1/10/65#
Trình bày các đơn hàng vận chuyển trong những ngày từ 1/5 đến 1/10 năm 95
ShipCountry In(“Canada”,”UK”) Trình bày các đơn hàng đến Canada hoặc UK
ShipCountry Not “USA” Các đơn hàng đến những nước khác Mỹ
ShipName Like “S*” Các đơn hàng chuyển đến khách hàng cĩ tên bắt đầu là S
CompanyName >=”N” Các đơn hàng đến cơng ty cĩ tên bắt đầu từ N -> Z
OrderID Right([OrderID,2])=”99” Các đơn hàng cĩ mã kết thúc là 99
CompanyName Len([CompanyName])>Val(3
0)
2) Dùng biểu thức tính tốn kiểu ngày làm tiêu chuẩn lựa chọn :
Field Expresstion Decription RequiredDate Between Date() And
DateAdd(“m”,3,Date())
Trình bày các đơn hàng yêu cầu trong khoảng ngày hơm nay đến 3 tháng sau OrderDate <Date()-30 Các đơn hàng trước 30 ngày kể từ ngày
hơm nay
OrderDate Year([OrderDate])=1996 Trình bày các đơn hàng trong năm 1996 OrderDate Datepart(“q”,[ OrderDate])=4 Các đơn hàng trong quý 4
OrderDate DateSerial(Year([OrderDate]),Month( [OrderDate])+1,1)-1
Các đơn hàng đặt trong ngày cuối của mỗi tháng
OrderDate Year([OrderDate])=year(Now()) And Month ([OrderDate]) = Month(Now())
Các đơn hàng trong năm và tháng hiện hành
3) Biểu thức sử dụng Field trống (Null,””) làm tiêu chuẩn lựa chọn
Field Expresstion Decription
ShipRegion IS NULL Các đơn hàng đến vùng cĩ mã trống ShipRegion Is Not Null Các đơn hàng đến những vùng khác trống Fax “” Các đơn hàng của khách hàng khơng cĩ máy Fax
4) Dùng một phần Field làm tiêu chuẩn chọn lựa
Field Expresstion Decription
ShipName Like “S*” Đơn hàng chuyển đến khách hàng cĩ tên bắt đầu là S
ShipName Like “*Imports” Đơn hàng chuyển đến khách hàng cĩ tên kết thúc là vtừ Imports
ShipName Like “[A-D]*” Đơn hàng chuyển đến khách hàng cĩ tên bắt đầu từ A-D
ShipName Like “*ar*” Đơn hàng chuyển đến khách hàng cĩ tên chứa 2 ký tự …ar…
ShipName Like “Maison Dewe?” Đơn hàng chuyển đến khách hàng cĩ tên mà phần đầu là Maison phần thứ 2 cĩ 5 kí tự mà kí tự thứ 5 khơng biết
5) Dùng kết quả các hàm tập hợp trên vùng làm tiêu chuẩn lựa chọn
Field Expresstion Decription
Freight >Davg(“[Freight]”, “Orders”) Tìm đơn hàng cĩ phí chuyên chở lớn hơn giá trị trung bình của chúng
Quatity >Daverage(“[Quatity]”, “OrderDetail”) Tìm các đơn hàng cĩ số lượng lớn hơn giá trị trung bình của chúng
6) Dùng SubQuery làm tiêu chuẩn lựa chọn
Field Expresstion Decription
UnitPrice (SELECT [UnitPrice] FROM [Product]WHERE
[ProductName]=”Aniseed Syrup”)
Tìm những sản phẩm cĩ đơn giá = đơn giá sản phẩm tên là Aniseed Syrup
UnitPrice >(SELECT [UnitPrice] FROM [Product]
Tìm những sản phẩm cĩ đơn giá lớn hơn đơn giá trung bình
Salary > ALL(SELECT [Salary] FROM [Employees]WHERE [Tilte] like”*Manager*” OR ([Tilte] LIKE “*Vice President*”))
Tìm nhân viên cĩ lương lớn hơn tất cả các nhân viên cĩ chức vụ là Manage hoặc Vice President OrderTotal : [UnitPrice] *[Quatity] > ALL (SELECT AVG([UnitPrice]*[Quatity]) FROM [OrderDetail]
Tìm cácđơn hàng cĩ giá trị lớn hơn giá trị trung bình
7) Dùng nhiều tiêu chuẩn lựa chọn trong Query
- Một Field dùng Or: Lập danh sách các khách hàng ở vùng SP hoặc RJ
- Hai Field dùng Or
- Hai Field dùng Or
- Ba Field dùng And và Or:
5.2.3 Sử dụng Field tính tốn trong query: Nhập biểu thức tính tốn vào vào ơ Field trong
query
Biểu thức Mơ tả
Fullname:[Firstname] &”” & [Lastname] Thêm cột Fullname là sự kết hợp giữa 2 cột FirstName và Last Name cách nhau 1 khoảng trống Address2: [City]&””&[Region] :
ProductInitial: Left([ProductName],1) Tạo cột mới tên: ProductInitial lấy 1 ký tự từ cột Productname
TypeCode: Right([AssetCode], 2) :
AreaCode:Mid([Fone],2,3) :
2) Dùng biểu thức số học làm Field tính tốn
Biểu thức Mơ tả
PrimeFreight: [Freight]*0.1 Tăng 10% phímchuyên chở trong Field PrimeFreight LeadTime:[RequireDate] –
[ShippedDate]
Tính số ngày đáp ứng đơn hàng cho khách hàng
TotalStock:
[UnitsInStock]+[UnitsOnOrder]
Tính tổng giá trị của Field UnitsInStock và UnitsOnOrder trong TotalStock
5.2.4 Dùng dịng total để nhĩm các dịng
Trong lưới thiết kế của query dịng total khơng được hiển thị, muốn hiển thị ta chọn View -> Total. Trong mỗi ơ Total cĩ các phép thống kê sau:
- Avg: tính giá trị trung bình - Count: Đếm số mẫu tin
- First : Giá trị của vùng thuộc mẫu tin đầu tiên trong bảng dữ liệu - Last : Giá trị của vùng thuộc mẫu tin cuối trong bảng dữ liệu
- Max : tính giá trị lớn nhất của những giá trị thuộc một vùng dữ liệu kiểu số - Min : tính giá trị nhỏ nhất của những giá trị thuộc một vùng dữ liệu kiểu số - StdDev: tính độ lệch chuẩn của những giá trị thuộc một vùng dữ liệu kiểu số Ngồi ra , khi cần cĩ thể chọn Group By, Where, Expression
Cách sử dụng :
a) Thống kê đối với tất cả các mẫu tin: trong trường hợp này khơng sử dụng Group By trên bất kỳ vùng nào trong lưới thiết kế
b) Thống kê trên từng nhĩm mẫu tin
Nhĩm một cấp, ví dụ: Tính tổng số lượng và giá trị từng sản phẩm
Field ProductID Quatity SUMOFPRICE:[UnitPrice]*[Quatit y]
Table OrderDatails OrderDetails
Nhĩm nhiều cấp :Tính tổng số lượng và sản p[hẩm mà khách hàng đã mua đối với từng chủng loại sản phẩm
Field CatergoryID ProductID Quatity SUMOFPRICE:[UnitPrice]*[Quatity]
Table Products OrderDatails OrderDetails
Total Group By Group By sum Sum
Lưu ý :thứ tự thực hiện phép nhĩm là từ trái sang phải c) Tiêu chuẩn lựa chọn trong Group By
Tương tự như select query ta cĩ thể lập điều kiện chọn lựa đối với vùng dữ liệu để lựa chọn và lọc ra các mẫu tin thoả điều kiện yêu cầu trong ơ Criteria
Ví dụ : cho biết mỗi khách hàng đặt mua bao nhiêu sản phẩm cĩ chủng loại 4 OR 5
d. Lập tiêu chuẩn giới hạn những mẫu tin trước khi tính tổng - Tính tổng trước, giới hạn mẫu tin sau
Trình bày những mẫu tin mà số lượng > 950 và giá trị của sản phẩm thuộc từng chủng loại khác 4 và 5 mà mỗi khách hàng đã đặt mua
BÀI TẬP THỰC HÀNH: SELECT QUERY
10. Thiết kế query cĩ tên QBT10 để liệt kê danh sách các đơn đặt hàng được lập ra trong 6 tháng đầu năm
11. Thiết kế query cĩ tên QBT11 liệt kê các danh sách đặt hàng trong tháng 1 và tháng 2 của khách hàng của khách hàng cĩ mã là AGROMAS
12. Thiết kế query cĩ tên QBT12 để tính thành tiền những mặt hàng trong đơn đặt hàng cĩ mã hố đơn là 10144.
Ghi chú:Cơng thức tính thành tiền :
Thanhtien: ([soluong]*[dongia]*(1-[chietkhau])/100)*100
13. Thiết kế query cĩ tên QBT13 hiển thị thơng tin chi tiết về mỗi đơn đặt hàng bao gồm mã hàng :mã đơn đặt hàng, tên các mặt hàng trong đơn đặt hàng , đơn giá, số lượng thành tiền, số ngày, tổng số tiền trả trước, tổng số tiền cịn lại, biết rằng :
Thanhtien: ([soluong]*[dongia]*(1-[chietkhau])/100)*100 Số ngày: Ngày lập ĐĐH đến ngày nhận hàng
Tổng số tiền trả trước được tính như sau :
- Nếu số ngày < 20: tổng số tiền trả trước bằng 20 % thành tiền