Cập nhật giá trị điểm trung bình tất cả các môn học (DIEMTB) của mỗi học viên(HOCVIEN) (tất cả các môn học đều có hệ số 1 và nếu học viên thi một môn nhiều lần, chỉ lấy điểm của lần thi sau cùng). Thuộc tình lần thi và điểm thi trong bảng KETQUATHI:sosad:
mong anh, chị và các bạn giúp em sớm sắp nộp bài rồi!!!:sosad:
up len cho anh chi nao giup em voi!!!:pudency:
Em phải tìm lần thi lớn nhất của 1 học viên ở 1 môn học, tương ứng với câu select bên ngoài. Vậy em phải kết câu select bên trong với bên ngoài theo cả mã học viên và mã môn học; ngoài ra phải gom nhóm theo cả mã học viên, mã môn học.
[Trích] Thầy Nghiệp.
VD: LANTHI(select MAX(LANTHI) from KETQUATHI…)
Anh chỉ hướng dẫn em làm được tới đâu rồi post lên anh sẽ hướng dẫn tiếp!
[QUOTE=09520184;255711]Em phải tìm lần thi lớn nhất của 1 học viên ở 1 môn học, tương ứng với câu select bên ngoài. Vậy em phải kết câu select bên trong với bên ngoài theo cả mã học viên và mã môn học; ngoài ra phải gom nhóm theo cả mã học viên, mã môn học.
[Trích] Thầy Nghiệp.
VD: LANTHI(select MAX(LANTHI) from KETQUATHI…)
Anh chỉ hướng dẫn em làm được tới đâu rồi post lên anh sẽ hướng dẫn tiếp![/QUOTE]
lần th lớn nhất thì dễ hơn chút rồi đây lại là lần thi sau cùng.Cũng đang tính ignore cái chỗ này
UPDATE HOCVIEN
SET DIEMTB = T.TB
FROM HOCVIEN HV INNER JOIN(SELECT MAHV, AVG(SUM_D) AS TB
FROM (SELECT MAHV, SUM(DIEM) AS SUM_D
FROM KETQUATHI
WHERE LANTHI = (SELECT MAX(LANTHI) FROM KETQUATHI GROUP BY MAHV, MAMH)
GROUP BY MAHV, MAMH
)
) T
ON T.MAHV = HOCVIEN.MAHV
Em làm như thế này! anh xem giùm em!
[QUOTE=09520184;255711]Em phải tìm lần thi lớn nhất của 1 học viên ở 1 môn học, tương ứng với câu select bên ngoài. Vậy em phải kết câu select bên trong với bên ngoài theo cả mã học viên và mã môn học; ngoài ra phải gom nhóm theo cả mã học viên, mã môn học.
[Trích] Thầy Nghiệp.
VD: LANTHI(select MAX(LANTHI) from KETQUATHI…)
Anh chỉ hướng dẫn em làm được tới đâu rồi post lên anh sẽ hướng dẫn tiếp![/QUOTE]
UPDATE HOCVIEN
SET DIEMTB = T.TB
FROM HOCVIEN HV INNER JOIN(SELECT MAHV, AVG(SUM_D) AS TB
FROM (SELECT MAHV, SUM(DIEM) AS SUM_D
FROM KETQUATHI
WHERE LANTHI = (SELECT MAX(LANTHI) FROM KETQUATHI GROUP BY MAHV, MAMH)
GROUP BY MAHV, MAMH
)
) T
ON T.MAHV = HOCVIEN.MAHV
Em làm như thế này, anh xem giúp em!
Mình thì mình làm thế này:
UPDATE HOCVIEN
SET DIEMTB = (SELECT AVG(DIEM)
FROM KETQUATHI K1
WHERE LANTHI = (SELECT MAX(LANTHI)
FROM KETQUATHI K2
WHERE (K1.MAHV = K2.MAHV AND K1.MAMH = K2.MAMH)
GROUP BY MAHV,MAMH)
GROUP BY MAHV
HAVING MAHV = HOCVIEN.MAHV)
[QUOTE=12520037;255719]lần th lớn nhất thì dễ hơn chút rồi đây lại là lần thi sau cùng.Cũng đang tính ignore cái chỗ này[/QUOTE]
Ủa thấy lần thi lớn nhất chính là lần thì sau cùng mà ![]()