====== Consultas SQL (Moodle) ======
Documentación oficial
* https://docs.moodle.org/dev/Database_schema_introduction
* https://docs.moodle.org/dev/XMLDB_Documentation
* https://docs.moodle.org/31/en/ad-hoc_contributed_reports
Foros
* https://moodle.org/mod/forum/discuss.php?d=151376
===== Consultas =====
En esta sección se encuentran aquellas consultas que he ido creando y/o recopilando a medida que he ido aprendiendo la estructura de la base de datos. En este sentido algunas de ellas tienen tiempo y no puedo asegurar que funcione con la estructura actual de la base de datos de Moodle, por lo que recomiendo estudiarlas detenidamente y/o probarlas en un entorno de pruebas.
==== Muestra el ID de un usuario dado su nombre de usuario ====
SELECT user.id
FROM mdl_user user
WHERE user.username="nombre de usuario";
==== Muestra información de usuarios que coincidan con un nombre ====
SELECT user.id, user.firstname, user.lastname
FROM mdl_user user
WHERE user.firstname LIKE "%Albert%";
==== Muestra información de usuarios que coincidan con un apellido ====
SELECT user.id, user.firstname, user.lastname
FROM mdl_user user
WHERE user.lastname LIKE "%Catalan%";
==== Muestra las fechas de finalización e inicio dado un ID de usuario (pendiente relacionarla con cursos y/o enrol para ver los cursos ====
SELECT FROM_UNIXTIME(user_enrolments.timestart), FROM_UNIXTIME(user_enrolments.timeend)
FROM mdl_user_enrolments user_enrolments
WHERE user_enrolments.userid=222;
==== Muestra los cursos que contengan un termino ====
SELECT
course.id, course.idnumber, course.fullname, course.shortname
FROM
mdl_course course
WHERE
course.fullname LIKE "%2012%"
==== Alumnos de un curso ====
SELECT user.id, user.firstname, user.lastname
FROM mdl_role_assignments role_assignments
INNER JOIN mdl_user user ON user.id=role_assignments.userid
INNER JOIN mdl_context context ON role_assignments.contextid=context.id
WHERE context.contextlevel=50
AND role_assignments.roleid=5
AND context.instanceid=ID
donde context.contextlevel 50 es para los cursos, role_assignments.roleid 5 para alumnos, context.instaceid sería el ID del curso que nos interesa
==== Alumnos sin acceso a un curso determinado ====
SELECT u.id, u.firstname, u.lastname
FROM mdl_role_assignments rs
INNER JOIN mdl_user u ON u.id=rs.userid
INNER JOIN mdl_context e ON rs.contextid=e.id
WHERE e.contextlevel=50 AND rs.roleid=5 AND e.instanceid=31
AND u.id NOT IN (SELECT u.id FROM mdl_role_assignments rs
INNER JOIN mdl_user u ON u.id=rs.userid
INNER JOIN mdl_context e ON rs.contextid=e.id
INNER JOIN mdl_log l ON rs.userid=l.userid
WHERE e.contextlevel=50 AND rs.roleid=5 AND e.instanceid=31 AND l.course=31
GROUP BY u.id)
===== Artículos =====
*http://moodlesql.blogspot.com.es/2010/07/matricular-usuario-no-curso-do-moodle.html
*http://sophinet.wordpress.com/2012/03/14/de-mi-paso-por-moodle/
===== Ad-Hoc Contributed Reports =====
*http://docs.moodle.org/20/en/ad-hoc_contributed_reports#Lists_.22loggedin_users.22_from_the_last_120_days
*http://docs.moodle.org/20/en/ad-hoc_contributed_reports#LIST_of_all_site_USERS_by_COURSE_enrollment_.28Moodle_2.x.29
Artículos
*http://www.dharmadigital.co/como-hacer-un-reporte-personalizado-en-moodle/