You are on page 1of 3

5.

d. Truy vấn tham số hoạt động không chính xác trong một số ít các trường hợp. Lý
do tại sao? Cách khắc phục?
Do người lập trình chưa đưa ra các điều kiện cụ thể và đầy đủ để người nhập tham số có
thể hiểu và nhập vào dữ liệu chính xác hoặc người nhập nhập sai dữ liệu cần tìm.
Cách khắc phục: Viết rõ kiểu dữ liệu cần nhập vào lời thông báo hoặc nhấp vào
parameters trên thanh công cụ query design và nhập kiểu dữ liệu mong muốn vào ô data
type.
7.
a.
-Câu 2a: SELECT Sinhvien.TenSV, IIf([GioiTinh]=True,"Nam","Nữ") AS GT
FROM Sinhvien;
- 2b: SELECT Sinhvien.TenSV, Sinhvien.NgaySinh
FROM Sinhvien
WHERE (((Sinhvien.NgaySinh) Like "*/*/1980")) OR (((Sinhvien.NgaySinh) Like
"*/*/1981"))
ORDER BY Sinhvien.NgaySinh DESC;
- 2c : SELECT Sinhvien.TenSV, Sinhvien.NgaySinh
FROM Sinhvien
WHERE ((Month([Ngaysinh])=9)) OR ((Month([Ngaysinh])=8))
ORDER BY Sinhvien.NgaySinh DESC;
- 2d: SELECT Sinhvien.TenSV, Sinhvien.NgaySinh
FROM Sinhvien
WHERE ((Month([ngaysinh])=2)) OR (((Sinhvien.NgaySinh)<#1/1/1980#));
- 2e: SELECT Sinhvien.TenSV, Sinhvien.GioiTinh, Sinhvien.NgaySinh
FROM Sinhvien
WHERE (((Sinhvien.TenSV) Like "Nguyen*"))
ORDER BY Sinhvien.TenSV;
- 3a: SELECT Sinhvien.TenSV, Sinhvien.NgaySinh, Tinh.TenTinh
FROM Tinh INNER JOIN Sinhvien ON Tinh.MaTinh = Sinhvien.MaTinh;
-3b: SELECT Sinhvien.TenSV, Sinhvien.NgaySinh, Lop.TenLop, Tinh.TenTinh
FROM Tinh INNER JOIN (Lop INNER JOIN Sinhvien ON Lop.MaLop =
Sinhvien.MaLop) ON Tinh.MaTinh = Sinhvien.MaTinh
WHERE (((Tinh.TenTinh)="Ha Noi"));
- 3c: SELECT Sinhvien.TenSV, Lop.TenLop
FROM Lop INNER JOIN Sinhvien ON Lop.MaLop = Sinhvien.MaLop
WHERE (((Sinhvien.NgaySinh) Like "11/09/*"));
- 3d: SELECT Sinhvien.TenSV, Sinhvien.NgaySinh, MonHoc.TenMon,
BangDiem.Diem
FROM MonHoc INNER JOIN (Sinhvien INNER JOIN BangDiem ON Sinhvien.MaSV
= BangDiem.MaSV) ON MonHoc.Mamon = BangDiem.Mamon
WHERE (((Sinhvien.TenSV)="Phan Thi Giang"));
-3e: SELECT Sinhvien.TenSV, Lop.TenLop, BangDiem.Diem
FROM MonHoc INNER JOIN (Lop INNER JOIN (Sinhvien INNER JOIN BangDiem
ON Sinhvien.MaSV = BangDiem.MaSV) ON Lop.MaLop = Sinhvien.MaLop) ON
MonHoc.Mamon = BangDiem.Mamon
WHERE (((BangDiem.Diem)=9) AND ((MonHoc.TenMon)="Foxpro")) OR
(((BangDiem.Diem)=10))
ORDER BY Sinhvien.TenSV, BangDiem.Diem DESC;
- 4a: SELECT Lop.TenLop, Count(Sinhvien.MaLop) AS [Sĩ số]
FROM Lop INNER JOIN Sinhvien ON Lop.MaLop = Sinhvien.MaLop
GROUP BY Lop.TenLop;
- 4b: SELECT Sinhvien.Tensv, Avg(Bangdiem.Diem) AS DTB
FROM Sinhvien, Bangdiem
WHERE (((Sinhvien.Masv)=[Bangdiem].[Masv]))
GROUP BY Sinhvien.Tensv;
- 4c: SELECT Sinhvien.TenSV, Avg(BangDiem.Diem) AS DTB
FROM Sinhvien INNER JOIN BangDiem ON Sinhvien.MaSV = BangDiem.MaSV
GROUP BY Sinhvien.TenSV
HAVING (((Avg(BangDiem.Diem))>=8));
- 4d: SELECT Lop.TenLop, Max(BangDiem.Diem) AS MaxOfDiem,
Min(BangDiem.Diem) AS MinOfDiem, Avg(BangDiem.Diem) AS AvgOfDiem
FROM (Lop INNER JOIN Sinhvien ON Lop.MaLop = Sinhvien.MaLop) INNER JOIN
(MonHoc INNER JOIN BangDiem ON MonHoc.Mamon = BangDiem.Mamon) ON
Sinhvien.MaSV = BangDiem.MaSV
WHERE (((MonHoc.TenMon)="foxpro"))
GROUP BY Lop.TenLop
HAVING (((Lop.TenLop)="CD K45C")) OR (((Lop.TenLop)="CD K44C"));
- 4e : SELECT [4b].Tensv, Lop.TenLop, Max([4b].DTB) AS [DTB Cao nhất lớp]
FROM Lop INNER JOIN (4b INNER JOIN Sinhvien ON [4b].Tensv =
Sinhvien.TenSV) ON Lop.MaLop = Sinhvien.MaLop
GROUP BY [4b].Tensv, Lop.TenLop
HAVING ((([4b].Tensv)="Nguyen Thi Nhat Thai")) OR ((([4b].Tensv)="Pham Thu
Huong")) OR ((([4b].Tensv)="Nguyen Huy Hoa")) OR ((([4b].Tensv)="Mai Trung
Nguyen"))
ORDER BY Max([4b].DTB) DESC;
- 5a: SELECT Sinhvien.TenSV, Sinhvien.NgaySinh
FROM Sinhvien
WHERE ((Year([ngaysinh])=[nhập năm sinh]));
- 5b: SELECT Sinhvien.TenSV, BangDiem.Diem, MonHoc.TenMon
FROM Sinhvien INNER JOIN (MonHoc INNER JOIN BangDiem ON
MonHoc.Mamon = BangDiem.Mamon) ON Sinhvien.MaSV = BangDiem.MaSV
WHERE (((Sinhvien.TenSV)=[nhập tên sinh viên]));
-5c: SELECT Sinhvien.TenSV, MonHoc.TenMon, Avg(BangDiem.Diem) AS DTB
FROM MonHoc INNER JOIN (Sinhvien INNER JOIN BangDiem ON Sinhvien.MaSV
= BangDiem.MaSV) ON MonHoc.Mamon = BangDiem.Mamon
GROUP BY Sinhvien.TenSV, MonHoc.TenMon
HAVING (((Avg(BangDiem.Diem))>=[Nhập điểm trung bình bé hơn điểm cần hiển
thị]));
- 6a : TRANSFORM Avg(BangDiem.Diem) AS AvgOfDiem
SELECT Sinhvien.TenSV, Avg(BangDiem.Diem) AS DTB
FROM MonHoc INNER JOIN (Sinhvien INNER JOIN BangDiem ON Sinhvien.MaSV
= BangDiem.MaSV) ON MonHoc.Mamon = BangDiem.Mamon
GROUP BY Sinhvien.TenSV
PIVOT MonHoc.TenMon;
- 6b: TRANSFORM Count(Sinhvien.TenSV) AS CountOfTenSV
SELECT Lop.TenLop
FROM (Lop INNER JOIN Sinhvien ON Lop.MaLop = Sinhvien.MaLop) INNER JOIN
(MonHoc INNER JOIN BangDiem ON MonHoc.Mamon = BangDiem.Mamon) ON
Sinhvien.MaSV = BangDiem.MaSV
WHERE (((MonHoc.TenMon)="foxpro"))
GROUP BY Lop.TenLop, MonHoc.TenMon
PIVOT BangDiem.Diem;

You might also like