Saya telah mencoba melakukan penelitian tetapi semua jawaban tidak cukup mengatasi masalah sederhana saya. Dalam database Kursus Moodle saya, saya melakukan SQL Query untuk melihat siswa apa yang menyelesaikan kelas dalam periode 24 jam. Ini berfungsi dengan baik, kecuali jika seorang siswa menyelesaikan DUA mata kuliah dalam periode 24 jam, itu hanya mencantumkan mata kuliah pertama yang mereka ambil.
Apakah ada cara agar laporan tersebut menunjukkan SEMUA mata kuliah yang diambil siswa dalam periode waktu tertentu?

    SELECT 
         c.shortname AS 'Course Name', 
         u.lastname AS 'Last Name',
         u.firstname AS 'First Name', 
         u.email, 
         uid.data AS birthday, 

    DATE_FORMAT(FROM_UNIXTIME(p.timecompleted),'%m/%d/%Y %T') AS 'Completed Date'

    FROM 
         prefix_course_completions AS p
         JOIN prefix_course AS c ON p.course = c.id
         JOIN prefix_user AS u ON p.userid = u.id
         JOIN prefix_user_info_data AS uid ON uid.userid = u.id
         JOIN prefix_user_info_field AS uif ON uid.fieldid = uif.id

    WHERE  
         c.enablecompletion = 1
         and uif.shortname = 'birthday' 
         and from_unixtime(p.timecompleted) > 
         date_sub(now(), interval 1 day)

    GROUP BY u.username
    ORDER BY c.shortname
0
DKeeler 25 Mei 2021, 17:49

1 menjawab

Jawaban Terbaik

Cobalah untuk menghapus GROUP BY u.username Anda. Saya tidak mengerti dengan baik bagaimana perilakunya dengan moodle, tetapi tidak ada ruang untuk itu dalam kueri SQL seperti milik Anda.

0
Connor Low 25 Mei 2021, 15:39