moodle:sql
Tabla de Contenidos
Consultas SQL (Moodle)
Documentación oficial
Foros
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
Ad-Hoc Contributed Reports
Artículos
moodle/sql.txt · Última modificación: 2023/07/07 14:04 por 127.0.0.1