Trả lời nhanh
Để tìm học sinh theo điểm trong bảng có hai trường Một_tiết và Học_kỳ, ta tạo biểu thức lọc (điều kiện) gồm các phép so sánh trên từng trường, nối bằng AND khi cần thoả mãn đồng thời, bằng OR khi chỉ cần một điều kiện đúng. Ví dụ: [Một_tiết]>=8 AND [Học_kỳ]>=8 cho học sinh có cả hai điểm từ 8 trở lên.
Hiểu đề: bài toán yêu cầu gì?
Đề cho một bảng (thường tên là Bảng điểm) có các trường điểm như Một_tiết và Học_kỳ. Yêu cầu là chọn ra những bản ghi (học sinh) thoả một điều kiện về điểm. Đây là thao tác lọc dữ liệu hoặc tạo truy vấn chọn (Select Query) trong hệ quản trị CSDL như Microsoft Access.
Lưu ý: vì đề gốc không nêu rõ ngưỡng điểm, bài này dùng các ngưỡng tự đặt (8, 5, 6,5…) làm ví dụ. Với đề của bạn, chỉ cần thay con số và phép so sánh cho đúng yêu cầu.
Cấu trúc của biểu thức điều kiện
- Tên trường đặt trong dấu ngoặc vuông: [Một_tiết], [Học_kỳ]. Tên có dấu cách hoặc dấu tiếng Việt thì bắt buộc dùng ngoặc vuông cho an toàn.
- Phép so sánh:
<,>,<=,>=,=,<>. - Giá trị: số điểm, viết số không có dấu nháy (dấu nháy dùng cho văn bản).
- Phép logic: AND (và), OR (hoặc), NOT (phủ định) để ghép nhiều điều kiện.
Các mẫu điều kiện hay gặp
| Yêu cầu (ví dụ) | Biểu thức |
|---|---|
| Cả hai điểm từ 8 trở lên | [Một_tiết]>=8 AND [Học_kỳ]>=8 |
| Ít nhất một trong hai điểm dưới 5 | [Một_tiết]<5 OR [Học_kỳ]<5 |
| Điểm học kỳ từ 5 đến 6,5 | [Học_kỳ]>=5 AND [Học_kỳ]<=6.5 (hoặc Between 5 And 6.5) |
| Điểm học kỳ cao hơn điểm một tiết (tiến bộ) | [Học_kỳ]>[Một_tiết] |
| Điểm một tiết đạt 10 nhưng học kỳ chưa đạt 8 | [Một_tiết]=10 AND [Học_kỳ]<8 |
Trong Access, dấu thập phân thường theo cài đặt của máy; nếu máy dùng dấu chấm thì viết 6.5, nếu dùng dấu phẩy thì viết 6,5.
Cách thực hiện trong Access
Cách 1: Lọc trực tiếp
Mở bảng ở dạng Datasheet → chọn Advanced Filter/Sort → kéo hai trường Một_tiết, Học_kỳ xuống lưới → gõ điều kiện ở hàng Criteria → Apply Filter.
Cách 2: Tạo truy vấn (Query Design)
- Create → Query Design, chọn bảng Bảng điểm.
- Thêm các trường cần hiển thị (ví dụ Họ tên, Một_tiết, Học_kỳ).
- Ở hàng Criteria nhập điều kiện. Điều kiện đặt cùng một hàng là AND; đặt ở các hàng khác nhau (Criteria và or) là OR.
- Nhấn Run để xem kết quả, rồi lưu truy vấn.
Ví dụ trên lưới: cột Một_tiết ghi >=8 và cột Học_kỳ ghi >=8 ở cùng hàng → học sinh có cả hai điểm từ 8. Nếu ghi >=8 ở Một_tiết (hàng Criteria) và >=8 ở Học_kỳ (hàng or) → học sinh có ít nhất một điểm từ 8.
Viết bằng SQL
Giả sử bảng tên Bang_diem. Truy vấn chọn học sinh có cả hai điểm từ 8:
SELECT * FROM Bang_diem WHERE Mot_tiet >= 8 AND Hoc_ky >= 8;
Muốn chỉ cần một điểm đạt thì đổi AND thành OR.
Vì sao AND, vì sao OR?
- Đề dùng từ “và”, “đồng thời”, “cả hai” → AND: bản ghi phải thoả mọi điều kiện, nên kết quả thường ít hơn.
- Đề dùng từ “hoặc”, “ít nhất một” → OR: chỉ cần thoả một điều kiện, kết quả thường nhiều hơn.
Mẹo nhớ: AND là “thu hẹp”, OR là “mở rộng”.
Lỗi sai thường gặp
- Viết
8<=[Một_tiết]<=10– Access không hiểu chuỗi so sánh kiểu toán học; phải tách thành hai điều kiện nối AND hoặc dùng Between. - Dùng chữ “và/hoặc” thay cho AND/OR.
- Đặt điểm trong dấu nháy kép, khiến trường số bị so sánh như văn bản.
- Nhầm “dưới 5” (<5) với “không quá 5” (<=5).
- Đặt điều kiện ở hai hàng khác nhau của lưới nhưng lại muốn AND.
Bài luyện tập
- Viết biểu thức chọn học sinh có điểm một tiết dưới 5 và điểm học kỳ dưới 5.
Đáp án: [Một_tiết]<5 AND [Học_kỳ]<5. - Viết biểu thức chọn học sinh có điểm một tiết hoặc điểm học kỳ đạt 10.
Đáp án: [Một_tiết]=10 OR [Học_kỳ]=10. - Viết câu SQL chọn học sinh có điểm học kỳ thấp hơn điểm một tiết.
Đáp án: SELECT * FROM Bang_diem WHERE Hoc_ky < Mot_tiet;
Câu hỏi thường gặp
Khi nào dùng AND, khi nào dùng OR để tìm học sinh theo điểm?
Dùng AND khi học sinh phải thoả đồng thời cả hai điều kiện (ví dụ cả điểm một tiết và học kỳ đều từ 8). Dùng OR khi chỉ cần thoả ít nhất một điều kiện.
Tên trường có dấu gạch dưới như Một_tiết có cần ngoặc vuông không?
Nên viết trong ngoặc vuông, dạng [Một_tiết], để Access nhận đúng tên trường, nhất là khi tên có dấu tiếng Việt hoặc khoảng trắng.
Điều kiện đặt ở cùng hàng hay khác hàng trong lưới truy vấn khác nhau thế nào?
Các điều kiện ở cùng một hàng Criteria được hiểu là AND; các điều kiện ở những hàng khác nhau (Criteria, or) được hiểu là OR.
Có thể so sánh trực tiếp hai trường với nhau không?
Có. Ví dụ [Học_kỳ]>[Một_tiết] chọn những học sinh có điểm học kỳ cao hơn điểm một tiết.