Ver Mensaje Individual
  #12 (permalink)  
Antiguo 20/11/2012, 06:24
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Problema Con consulta mysql

Cita:
como puedo definir en donde me mustre la cantidad de alumnos que reprobaron por ejemplo de 1 a 5 materias
Esa es una consulta algo más elaborada, pero sencilla. Lo que tienes que hacer siempre es no tratar de resolverlo mentalmente todo en una sola y única condición, porque eso casi nunca existe.
La idea es que te plantees el problema desglosando las condiciones
- Contar las distintas materias por alumno.
- En cada materia debe tener nota menor o igual a cinco.
- Listar los que tengan cinco o menos materias reprobadas.
Lo primero, implica contar los distintos por alumno: COUNT(DISTINCT idMateria) y GROUP BY idAlumno.
Lo segundo, buscar aquellos que tengan calificación menor o igual a 5: WHERE Calificacion <=5.
Lo tercero, que el total de lo contado esté entre 1 y 5.
hay dos formas de escribir esta consulta de manera simple:
Código MySQL:
Ver original
  1. SELECT idAlumno, COUNT(DISTINCT idMateria) cantidadMateriasReprobadas
  2. FROM Calificaciones
  3. WHERE Calificacion BETWEEN 1 AND 5
  4. GROUP BY idAlumno
  5. HAVING cantidadMateriasReprobadas <= 5;

o bien
Código MySQL:
Ver original
  1. SELECT idAlumno, cantidadMateriasReprobadas
  2.     (SELECT idAlumno, COUNT(DISTINCT idMateria) cantidadMateriasReprobadas
  3.     FROM Calificaciones
  4.     WHERE Calificacion BETWEEN 1 AND 5
  5.     GROUP BY idAlumno) T1
  6. WHERE cantidadMateriasReprobadas <= 5;

Lo único a tener en cuenta es que este listado no incluirá a aquellos alumnos que se inscribieron y no tuvieron notas, porque para que aparezcan en el listado la nota debe ser de por lo menos 1. No admite ceros.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)