Query en Mysql para mostrar listados de estudiantes por grupos

Query en Mysql para mostrar listados de estudiantes por grupos

de Rosalba Correa -
Número de respuestas: 4

Buenas tardes.

Mi base de datos que uso con moodle es para un colegio y está organizada de la siguiente manera:

Creé categorias con el nombre de cada grado, dentro de esas categorias creé subcategorias con el número de salón de cada grado, finalmente dentro de esas subcategorias creé cursos con el nombre de las asignaturas para cada grado.

Ejemplo: Categoria ONCE, subcategoria 1101, cursos MATEMATICAS, CIENCIAS SOCIALES etc.

Todo funciona correctamente cada grado tienen los estudiantes como debe ser y demás.

Ahora me han pedido que saque un listado por cada grado y lo estoy haciendo desde la base de datos con una consulta pero me sale el mismo listado de estudiantes de primero a once, es como si sólo existieran 34 estudiantes y todos estuvieran en todos los grados, me sercioré de que no es asi, ingresando a cada grupo y revisando en calificaciones, allí me sale un número diferente de estudiantes en cada grado y todos los estudiantes con datos diferentes, he utilizado la misma consulta varias veces y nunca me había sucedido, a quien me pueda ayudar mil gracias.

Consulta:

SELECT mdl_user.username, mdl_user.firstname, mdl_user.lastname, mdl_course_categories.name FROM mdl_course_categories

INNER JOIN mdl_context ON mdl_context.instanceid = mdl_course_categories.id

INNER JOIN mdl_role_assignments ON mdl_context.id = mdl_role_assignments.contextid

INNER JOIN mdl_role ON mdl_role.id = mdl_role_assignments.roleid

INNER JOIN mdl_user ON mdl_user.id = mdl_role_assignments.userid

WHERE mdl_role.id = 5 AND mdl_course_categories.id = 3

ORDER BY mdl_user.firstname

 

aquí lo único que cambio siempre es el valor a: mdl_course_categories.id = ?

colocando el valor de cada categoria.

Muchas gracias.

Saludos.

Promedio de valoraciones: -
En respuesta a Rosalba Correa

Re: Query en Mysql para mostrar listados de estudiantes por grupos

de Carlos Diaz Perez (ESRP) -
No se si realmente te he entendido bien, pero con este select puedes sacar todos los alumnos que estan matriculados en algun curso y grupo, a partir de ahi poniendo los where correspondientes puedes seleccionar de unos grupos u otros

SELECT
mdl_user.id
, mdl_course.fullname
, mdl_course_categories.name
, mdl_course_categories.description
, mdl_user.idnumber
, mdl_user.firstname
, mdl_user.lastname
FROM
moodle.mdl_user
INNER JOIN moodle.mdl_user_lastaccess
ON (mdl_user.id = mdl_user_lastaccess.userid)
INNER JOIN moodle.mdl_course
ON (mdl_user_lastaccess.courseid = mdl_course.id)
INNER JOIN moodle.mdl_course_categories
ON (mdl_course.category = mdl_course_categories.id)
where mdl_course_categories.id = 3;

Espero te sirva



En respuesta a Rosalba Correa

Re: Query en Mysql para mostrar listados de estudiantes por grupos

de Sandra Piedrabuena -
Hola; mi estructura es similar a la tuya. Para mi las categorias son las unidades educativas (escuela 2, escuela 189, ...) y tengo como subcategoria el numero de salon de cada grado de cada escuela (3ro A, 3ro B, ..., 6to C) y curso, el nombre de la asignatura para cada grado (Biologia, Matemática, ...).
La siguiente consulta encuentra los alumnos de 1ro A turno noche de la escuela 262.
Saludos.
SELECT
 mdl_user.id
 ,mdl_course.fullname
 ,mdl_course_categories.name
 ,mdl_course_categories.description
 ,mdl_user.idnumber
 ,mdl_user.firstname
 ,mdl_user.lastname
FROM mdl_user INNER JOIN mdl_role_assignments
ON (mdl_user.id = mdl_role_assignments.userid)
 INNER JOIN mdl_context 
 ON (mdl_role_assignments.contextid = mdl_context.id)
 INNER JOIN mdl_course 
 ON (mdl_context.instanceid = mdl_course.id)
 INNER JOIN mdl_course_categories
 ON (mdl_course.category = mdl_course_categories.id)
WHERE mdl_context.contextlevel = 50 and 
 mdl_role_assignments.roleid = 5 and
 mdl_course_categories.id =2621103; 


En respuesta a Rosalba Correa

Re: Query en Mysql para mostrar listados de estudiantes por grupos

de Sandra Piedrabuena -
Hola Rosalba:
Te sirve la siguiente consulta?.
Saludos

Lista usuarios por subcategoria(curso)
SELECT DISTINCT   mdl_user.id 
,mdl_course_categories.name
,mdl_user.idnumber
,mdl_user.firstname
,mdl_user.lastname
FROM mdl_user
INNER JOIN mdl_role_assignments
ON (mdl_user.id = mdl_role_assignments.userid)
INNER JOIN mdl_context
ON (mdl_role_assignments.contextid = mdl_context.id)
INNER JOIN mdl_course
ON (mdl_context.instanceid = mdl_course.id)
INNER JOIN mdl_course_categories
ON (mdl_course.category = mdl_course_categories.id)
WHERE mdl_role_assignments.roleid =5;