====== 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/