Respuesta: POSICION de un elemento dentro de un conjunto de datos Ehhhh......
A ver, vamos por partes.
1) En el editor, arriba, hay una opcion que dice Highlight, se usa para poner codigo, por favor, cuando publiques codigo de culquier lenguaje, usa esa opcion.
2) ¿Tablas con 44 columnas? y si mañana se agrega una materia mas, ¿Agregas otra columna a la tabla? eso esta mal. En si esta mal el modelo de datos, por lo tanto todo lo que venga después de eso también estará mal ya que acarrea un error de mal diseño.
Lo que tienes que hacer como punto de partida, es rearmar la base de datos.
La idea es que separes cada cosa en una tabla diferente.
Las materias:
Código MySQL:
Ver original -- -- Volcado de datos para la tabla `materias` -- (1, 'Castellano'), (2, 'Ingles'), (3, 'Matematica'), (4, 'Informatica');
Los cursos:
Código MySQL:
Ver original -- -- Volcado de datos para la tabla `cursos` -- (1, '1a'), (2, '1b'), (3, '2a'), (4, '2b');
Los alumnos pertenecen solo a un curso, por lo que hay que relacionarlos:
Código MySQL:
Ver original-- -- Estructura de tabla para la tabla `alumnos` -- -- -- Volcado de datos para la tabla `alumnos` -- (1, 'French', 1), (2, 'Beruti', 1), (3, 'Vicente Lopez', 1), (4, 'Mitre', 3), (5, 'Belgrano', 3), (6, 'San Martin', 3); -- -- Restricciones para tablas volcadas -- -- -- Filtros para la tabla `alumnos` --
Las materias pertenecen a 1 o mas cursos, por ejemplo, todos los 1º tendrán las mismas materias (quizá con otros profesores, pero eso es otro tema aparte), por lo que hay que relacionar las materias con los cursos:
Código MySQL:
Ver original-- -- Estructura de tabla para la tabla `materiasxcurso` -- KEY `materia` (`materia`) -- -- Volcado de datos para la tabla `materiasxcurso` -- (1, 1), (2, 1), (1, 2), (2, 2), (3, 3), (4, 3), (3, 4), (4, 4); -- -- Restricciones para tablas volcadas -- -- -- Filtros para la tabla `materiasxcurso` --
Y finalmente, cada alumno debe tener un registro de que materias curso y que notas parciales se saco:
Código MySQL:
Ver original-- -- Estructura de tabla para la tabla `materiasxalumno` -- KEY `materia` (`materia`) -- -- Volcado de datos para la tabla `materiasxalumno` -- INSERT INTO `materiasxalumno` (`alumno`, `materia`, `parcial1`, `parcial2`, `parcial3`) VALUES (1, 1, 10, 8, 9), (1, 2, 7, 8, 9), (2, 1, 4, 2, 6), (2, 2, 8, 7, 7), (3, 1, 2, 8, 9), (3, 2, 7, 7, 7), (4, 1, 7, 8, 7), (4, 2, 6, 8, 7), (4, 3, 5, 8, 8), (4, 4, 8, 7, 9), (5, 1, 7, 7, 7), (5, 2, 7, 7, 7), (5, 3, 4, 6, 6), (5, 4, 6, 8, 7), (6, 1, 6, 8, 8), (6, 2, 9, 6, 7), (6, 3, 1, 4, 6), (6, 4, 9, 8, 9); -- -- Restricciones para tablas volcadas -- -- -- Filtros para la tabla `materiasxalumno` --
Ahora bien, con esa estructura, si lo que quieres es saber el promedio que un alumno tiene en una materia particular puedes hacer:
Código MySQL:
Ver original a.nombre, m.nombre, ( ( ) / ( ) ) promedio ( )
Con eso sabes que promedio tiene un alumno en una materia.
Ahora si quieres saber el promedio de un alumno en todas las materias que curso, puedes hacer:
Código MySQL:
Ver original a.nombre, COUNT(ma.materia ) materias_cursadas , ( ) / ( ) ) promedio ( )
Si quieres hacer un ranking puedes hacer:
Código MySQL:
Ver original (@rownum:=@rownum+1) posicion, ma.alumno, a.nombre, COUNT(ma.materia ) materias_cursadas , ( ) / ( ) ) promedio materiasxalumno ma ( )
Y si quieres saber, en particular, que posicion de ese ranking ocupa un alumno, puedes hacer:
Código MySQL:
Ver original( (@rownum:=@rownum+1) posicion, ma.alumno, a.nombre, COUNT(ma.materia ) materias_cursadas , ( ) / ( ) ) promedio materiasxalumno ma ( ) ) ranking ranking.alumno = 5
__________________ Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
Última edición por NSD; 01/12/2014 a las 10:26 |