Bạn gửi file lên đây.Thiết kế query xếp loại học lực dựa vào điểm trung bình của các học sinh như
sau: MAHS HOTEN DIEMTB XEPLOAI.
Trong đó: Xếp loại dựa vào DIEMTB nếu DIEMTB>=8,Giỏi, DIEMTB>=6.5, Khá,
DIEMTB>=5, Trung bình, ngược lại, YếuView attachment 236696
Điểm Hạng
11. Dummy
8. Giỏi
6.5 Khá
5. Trung Bình
0. Yếu
Điểm ĐiểmGH Hạng
8. 11. Giỏi
6.5 8. Khá
5. 6.5. Trung Bình
0. 5. Yếu
Cái bác @VetMini này cứ như con vẹt ấy, tiêu đề sai mà vẫn giúpChú thêm cho các bạn đang học CSDL:
Bài này là bài tập, Thầy/Cô kém kiến thức thực tế nên tôi mới giải như vậy.
Nếu thực tế là hệ thống của tôi thì tôi lập thêm một bảng nhỏ để xếp hạng.
Dùng một query để tự join bảng này với nó, và lấy được như sauMã:Điểm Hạng 11. Dummy 8. Giỏi 6.5 Khá 5. Trung Bình 0. Yếu
Query xếp hạng sẽ dùng dữ liệu trên.Mã:Điểm ĐiểmGH Hạng 8. 11. Giỏi 6.5 8. Khá 5. 6.5. Trung Bình 0. 5. Yếu
Tại sao làm vậy?
Theo nguyên tắc CSDL LH thì query với dữ liệu điền thẳng vào (như bài #3) là loại "magic numbers".
Ví dụ có 10 cái queries như vậy thì mỗi lần thay đổi thang điểm lại phải lùng đủ 10 cái này ra chỉnh sửa? Phải báo những người dùng có queries triêng của mình tự sửa queries?
Dùng một bảng với query phụ như trên thì mỗi lần chinhr sửa tôi chỉ việc cóp lại cái bảng cũ, và cái query cũ, version chúng (bằng ngày). Sửa bang mới xong, tôi báo cho ngừoi dùng: "cách sắp hạng đã thay đổi kể từ ngày xyz Những queries báo cáo kể từ ngày này sẽ tự động theo quy trình mới. Nếu cần báo cáo trước ngày xyz thì nên chỉnh lại để sử dụng Query version xyz"