Szia!
Kész megoldásom nincs, korábban már csináltam ilyesmit, az elvet leírom. A teszt összesített eredményeit az alábbi lekérdezés adja (ez persze szabadon bővíthető plusz mezőkkel ha kell):
select q.sumgrades,q.uniqueid,q.layout,concat(u.lastname,' ',u.firstname) as nev from quiz_attempts q, user u where q.userid=u.id and quiz=#IDE ÍRD BE A TESZT AZONOSÍTÓJÁT# order by nevAz eredményhalmazon egy ciklussal fuss végig, az alábbiakat minden iterációnál végre kell hajtani:
- a teszt eredményét (%) a (sumgrades - 1) * 2 képlettel számoltam ki (ne kérdezd miért, talán így egyezett a Moodle felületén látottal)
- a teszt kérdéseinek azonosítószámait a layout mező tartalmazza vesszővel elválasztva, ezen hallgatónként egy-egy újabb ciklussal végig kell menni. Az egyes hallgatók egyes feladatokra adott válaszait a question_states tábla tárolja, a lekérdezés ilyesmi:
select answer from question_states where question=#KÉRDÉS AZONOSÍTÓSZÁMA# and event=6 and attempt=#AZ ELŐZŐ LEKÉRDEZÉSBŐL SZÁRMAZÓ uniqueid MEZŐ#
Az event mező tartalmában nem vagyok biztos, hogy miért a 6-ost kell keresni, bizonyos kérdéstípusnál a 8-ast, ennek utána kellene járni. Ez a lekérdezés valószínűleg csak egy számot fog adni, ami a válasz azonosítószáma, ebből ki kell még hámozni a szöveges választ, ezt a question_answers táblából tudod kinyerni (eddig én nem jutottam, elegendő volt az azonosítószámot vizsgálnom)
Remélem segítettem valamelyest!
Vince