Wpis z mikrobloga

Mirki, takie pytanie odnośnie #moodle #sql #bazydanych - potrzebuje wyciągnąć z bazy osoby, które ukończyły kurs.

SELECT firstname, lastname, department AS "Ośrodek", ccat.name AS "Kategoria Kursu",c.fullname as "Nazwa Kursu",
case
when ccom.timecompleted IS NULL then 'Nie Ukończony'
when ccom.timecompleted IS NOT NULL then 'Ukończony'
end as "Status ukończenia"
FROM {user} AS u
JOIN {coursecompletions} AS ccom ON u.id = ccom.userid
JOIN {course} AS c ON c.id = ccom.course
JOIN {course
categories} AS ccat ON c.category = ccat.id
WHERE department ='1-230' and u.deleted = 0 and u.suspended = 0
ORDER BY c.fullname

Jednak wyniki tej kwerendy nie pokrywają mi się z raportami jakie generuje w aplikacji. Część ludzi, którzy ukończyli taki kurs są w wynikach jako ci, którzy nie ukończyli.

Inna kwestia, że pole timecompleted może nie być tym samym polem z którego moodle to wyciąga ( ͡° ͜ʖ ͡°)

Próbowałem działać z quizattempts i ocenami w quizgrades, ale tam wyniki w ogóle jak z kosmosu.

Każde wsparcie będzie mile widziane.
  • 8
JOIN {course} AS c ON c.id = ccom.course
a moze JOIN {course} AS c ON c.id = ccom.courseid ?
podobnie
JOIN {coursecategories} AS ccat ON c.category = ccat.id
JOIN {coursecategories} AS ccat ON c.categoryid = ccat.id ?

:> 'Nie Ukończony' -> 'nieukończony'

co jesli uzytkownik bral udzial w wielu kursach? moze dlatego tak dziala?
@Adel87: nie wiem, byc moze po prostu porownujesz nie te dane z nie tym raportem w programie. ogolnie chyba w zrodlowym kodzie da sie podejrzec z czego bierze informacje czy jest ukonczony kurs?
@ck__: @Rokuto: Korzystam z wtyczki służącej do automatyzacji raportów

"Ad-hoc database queries"

Z forum moodle dowiedziałem się, że pobieram to info albo z tabeli course_completions (tutaj mi wykop zmienił nazwe, ale w kwerendzie jest ok) albo z tabeli z ocenami (finalgrade) tylko tutaj to taka kwerenda musiałaby być dla każdego kursu.

Ja chce to niejako zautomatyzować. Te raporty mogą potem przychodzić na mail osoby odpowiedzialnej za daną grupę.

Schemat całej
@Adel87: rozumiem, że dla danego użytkownika i kursu masz dokładnie jeden wpis, tak?
U ciebie użytkownik XXX nie ukończył kursy YYY, ale w raporcie dokładnie ten sam użytkownik XXX ukończył kurs YYY. W raporcie jest pokazana jakaś data?
rozumiem, że dla danego użytkownika i kursu masz dokładnie jeden wpis, tak?

U ciebie użytkownik XXX nie ukończył kursy YYY, ale w raporcie dokładnie ten sam użytkownik XXX ukończył kurs YYY. W raporcie jest pokazana jakaś data?


@Rokuto: Chce mieć info o każdym użytkowniku z danego rejonu poza zawieszonymi i usuniętymi, którzy albo ukończyli ten kurs albo nie. Czyli 1 user (z danego departamentu) będzie pojawiał się przy każdym w danej