Lekérdezés

Lekérdezés

Édes Péter írta időpontban
Válaszok szám: 4
Sziasztok!

Egy lekérdezést szeretnék készíteni, amelyben egy adott kurzus tanulóinak nevét jelenítem meg.
A kérdésem az, hogy mely adattáblákból tudom megoldani a feladatot?
Mely táblán (táblákon) keresztül tudom megteremteni a kapcsolatot a curse és a user táblák között?

Köszönettel: Péter

Válasz erre: Édes Péter

Tárgy: Lekérdezés

Vágvölgyi Csaba írta időpontban
Sziasztok!

A fenti lekérdezés a course_display nevű tábla alpján megtehető. Itt a 2. oszlop a kurzusazonosító, a 3. oszlop pedig a felhasználó azonosító.Ezek a user illetve course táblák alapján feloldhatók.

Ha egyedi lekérdezésekre van szükség, akkor hasznos lehet ez a kiegészítő modul:
http://moodle.org/plugins/view.php?plugin=block_configurable_reports

Üdv.: Vágvölgyi Csaba
Válasz erre: Vágvölgyi Csaba

Tárgy: Lekérdezés

Édes Péter írta időpontban
Szia!
Köszönöm a választ!
Kipróbáltam, de nálam nem változik meg a course_display tábla tartalma, ha beíratok egy tanulót a kurzusba.
Én a következőképpen próbálkoztam (configurable_reports-ban):
Select 
u.id AS 'Azonosító',
concat(u.lastname, ' ', u.firstname) AS 'Név',
c.fullname AS 'Kurzus neve'

From prefix_user_enrolments AS ue
INNER JOIN prefix_user AS u ON ue.userid=u.id
INNER JOIN prefix_enrol AS e ON ue.enrolid=e.id
INNER JOIN prefix_course AS c ON c.id=e.courseid

%%FILTER_COURSES:e.courseid%%

Order By u.lastname, u.firstname

Ez úgy tűnik, hogy működik, de nem csak a tanulókat listázza ki, hanem mindenkit, aki a kurzushoz tartozik (pl. tanár).
Arra lenne ötleted, hogy miként tudnék student-re szűrni?

Köszönettel: Péter
Válasz erre: Édes Péter

Tárgy: Lekérdezés

Édes Péter írta időpontban
Végül is van egy ötletem a megoldásra (úgy találtam), csak nem vagyok benne biztos, hogy teljesen korrekt (bár az eredmény jónak tűnik):
INNER JOIN prefix_role_assignments AS asg ON u.id=asg.userid
INNER JOIN prefix_context AS context ON asg.contextid=context.id   
where context.contextlevel = 50
AND
context.instanceid=c.id
AND 
'student' IN (SELECT shortname FROM prefix_role WHERE id=asg.roleid)