2016-10-25 19 views
0

私はSQLコマンドに関する質問があります - 私はMoodleコースに登録されているすべての学生のリストを取得する必要がありますが、各学生の登録方法、Banner Pluginなど、これは私が現在持っているSQLですが、登録できない部分がありますか?一致するMoodle SQL登録

は、Moodleの3.1に

おかげ コナーました。

SELECT 
c.id AS courseid, 
c.idnumber AS crn, 
c.fullname, 
u.username, 
u.firstname, 
u.lastname, 
u.email        
FROM mdl_role_assignments ra 
JOIN mdl_user u ON u.id = ra.userid 
JOIN mdl_role r ON r.id = ra.roleid 
JOIN mdl_context cxt ON cxt.id = ra.contextid 
JOIN mdl_course c ON c.id = cxt.instanceid 
WHERE ra.userid = u.id        
AND ra.contextid = cxt.id 
AND cxt.contextlevel = 50 
AND cxt.instanceid = c.id 
AND roleid = 46 
ORDER BY c.id 

答えて

0

あなたのクエリはコース上enroledている学生を示していない、それだけです(私はあなたのシステム上で前提とし「46」ID「46」との役割を持つユーザーは、コースレベルで割り当てられ示しあなたが興味を持っている学生の役割)。

同様の質問に対する私の答えはここで見つけることができます:https://stackoverflow.com/a/22166653/1148411

だけで返すようにフィールドのリストに「enrolmenttype AS e.enrol」を追加し、そのあなたが望むものである必要があり、そのクエリで開始。

+0

davosmithおかげで、私はmdl_enrolから登録]タイプがありませんでした、以下のクエリを使用して、最終的にあなたの権利をそれを得た - あなたの権利をし、YES「46」私たちが見ていた私たちの学生の役割です。 – Conor

+0

SELECT c.idnumber、c.shortname、e.enrol、u.username、u.firstname、u.lastname FROM mdl_enrol e INNER JOIN mdl_course c ON(c.id = e.courseid) INNER JOIN mdl_user_enrolments ue ON e.id = ue.enrolid) INNER JOIN mdl_user u ON(ue.userid = u.id) WHERE c.idnumber REGEXP '\ .2015 $' ORDER BY c.idnumber – Conor

0

このクエリはこの問題を解決しました。このケースでは、学年'2016 'のモジュールIDを終了します。

SELECT c.idnumber, c.shortname, e.enrol, u.username, u.firstname, u.lastname FROM mdl_enrol e 
INNER JOIN mdl_course c ON (c.id = e.courseid) 
INNER JOIN mdl_user_enrolments ue ON (e.id = ue.enrolid) 
INNER JOIN mdl_user u ON (ue.userid = u.id) 
WHERE c.idnumber REGEXP '\.2015$' 
ORDER BY c.idnumber 
関連する問題