特定のコースに登録された学生はどのテーブルに?

特定のコースに登録された学生はどのテーブルに?

- Toshihiro KITA の投稿
返信数: 5
特定のコースに登録された学生はどのテーブルに格納されているんでしょう? バージョンは 1.9.5 です。
基本的な質問ですみません。

言い換えれば,コースIDが特定されたときに,そのコースに登録されている学生のID番号(1から順番にMoodleにユーザ登録する際に振られる内部番号)の一覧を取るSQL文は何でしょう?という疑問なんですが。
Toshihiro KITA への返信

Re: 特定のコースに登録された学生はどのテーブルに?

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators
> 特定のコースに登録された学生はどのテーブルに格納されているんでしょう?

mdl_contextとmdl_role_assignmentsに格納されるようです。

> 言い換えれば,コースIDが特定されたときに,そのコースに登録されている学生のID番号(1から順番にMoodleにユーザ登録する際に振られる内部番号)の一覧を取るSQL文は何でしょう?という疑問なんですが。

下記投稿が参考になるかと思います。

[Which tables involved in course enrolment]
http://moodle.org/mod/forum/discuss.php?d=97091

[Courses in moodle database]
http://moodle.org/mod/forum/discuss.php?d=72639
Toshihiro KITA への返信

Re: 特定のコースに登録された学生はどのテーブルに?

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators
例えば、コース内の「管理 > ロールの割り当て」に移動したときに表示されるURIが下記のような場合、
http://your_moodle.com/admin/roles/assign.php?contextid=123

下記のSQL文でユーザID、ユーザ名、姓名を取得することができます。

SELECT
u.id, u.username, u.lastname, u.firstname
FROM
mdl_user u,
mdl_role_assignments ra,
mdl_role r
WHERE
ra.roleid = r.id AND
ra.userid = u.id AND
r.shortname = 'student' AND
contextid =123
ORDER by u.username;

最大評点: お役立ち度: ★★★★★★★ (2)
Mitsuhiro Yoshida への返信

Re: 特定のコースに登録された学生はどのテーブルに?

- Toshihiro KITA の投稿
具体的なコードまで,大変ありがとうございました。

role_assignments という名前だとは思いつきませんでした。

コースに対する番号として,
contextid というのと,instanceid というのがあるようですね。
Toshihiro KITA への返信

Re: 特定のコースに登録された学生はどのテーブルに?

- Kenichi IKEDA の投稿
lib/accesslib.phpに
  • get_users_from_role_on_context()
  • get_users_by_capability()
の関数があります。
私どもは、それをメンバー取得に利用しています。 取り急ぎお返事まで。
最大評点: お役立ち度: ★★★★★★★ (2)
Kenichi IKEDA への返信

Re: 特定のコースに登録された学生はどのテーブルに?

- Toshihiro KITA の投稿
どうもありがとうございます。助かります。

いろいろな用途の API を,逆引き的に整理しておくと,便利でしょうね。