Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Problema Con consulta mysql

Estas en el tema de Problema Con consulta mysql en el foro de Mysql en Foros del Web. Hola Que tal Tengo el siguiente problema espero no se tan basico Tengo una Tabla asi: idAlumno Materia Calificacion Semestre y quiero obtener de esta ...
  #1 (permalink)  
Antiguo 19/11/2012, 13:10
Avatar de carlosloaiza21  
Fecha de Ingreso: julio-2009
Mensajes: 175
Antigüedad: 14 años, 9 meses
Puntos: 0
Exclamación Problema Con consulta mysql

Hola Que tal

Tengo el siguiente problema espero no se tan basico Tengo una Tabla asi:

idAlumno Materia Calificacion Semestre

y quiero obtener de esta tabla el numero de Aprobados en todas las materias del el semestre en especifico

Es decir que no no es sufuciente con validar que la calificacion sea mayor de 5 sino que Tengo que obtener el numero de semestre que tiene cada materia ahi les va un ejemplo

Código:
idAlumno   Materia Calificacion    Semestre
01           MAT1     6                1
02           MAT1     5                1
03           ESP1     6                1
04           ESP1     6                1
Y esto me tiene que devolver

Numero de Aprobados 1 en todas las materias de primer semestre

asi mismo el numero de alumnos Reprobados de 1 a 5 materias

Por favor Ayuda!!!!!
__________________
La vida de un hombre es mas interesante si ha fracasado, por que eso quiere decir que ha intentado superarse
  #2 (permalink)  
Antiguo 19/11/2012, 13:24
Avatar de 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, 4 meses
Puntos: 2658
Respuesta: Problema Con consulta mysql

UNION ALL, tienes que usar UNION ALL...
En cada consulta, tomas los datos correspondientes, y se usa UNION ALL para obtener la tabla.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 19/11/2012, 13:49
Avatar de carlosloaiza21  
Fecha de Ingreso: julio-2009
Mensajes: 175
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Problema Con consulta mysql

Me podrias ayudar un poco mas espero no sea molestia :(
__________________
La vida de un hombre es mas interesante si ha fracasado, por que eso quiere decir que ha intentado superarse
  #4 (permalink)  
Antiguo 19/11/2012, 14:57
Avatar de carlosloaiza21  
Fecha de Ingreso: julio-2009
Mensajes: 175
Antigüedad: 14 años, 9 meses
Puntos: 0
Exclamación Respuesta: Problema Con consulta mysql

Cita:
Iniciado por gnzsoloyo Ver Mensaje
UNION ALL, tienes que usar UNION ALL...
En cada consulta, tomas los datos correspondientes, y se usa UNION ALL para obtener la tabla.
Me podrias Ayudar un poco mas ya revise un poco la union all pero no logro entender como la puedo aplicar a mi problema

Gracias
__________________
La vida de un hombre es mas interesante si ha fracasado, por que eso quiere decir que ha intentado superarse
  #5 (permalink)  
Antiguo 19/11/2012, 15:33
Avatar de 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, 4 meses
Puntos: 2658
Respuesta: Problema Con consulta mysql

1) No dupliques temas. Está prohibido y a estas alturas de tu participación ya lo deberías saber.
El que cambies la redacción no implica que el tema sea diferente.
2) Ten paciencia. También deberías saber que en FDW uno participa por vocación, no es pago y no es un trabajo, y uno responde en el momento en que puede hacerlo. No te puedo responder en horario laboral de Argentina porque yo trabajo. Los posts durante en día los hago durante el descanso.

Ten paciencia.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 19/11/2012, 15:35
Avatar de carlosloaiza21  
Fecha de Ingreso: julio-2009
Mensajes: 175
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Problema Con consulta mysql

Lo siento, gracias, si gustas borra el tema buen dia
__________________
La vida de un hombre es mas interesante si ha fracasado, por que eso quiere decir que ha intentado superarse
  #7 (permalink)  
Antiguo 19/11/2012, 16:11
Avatar de 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, 4 meses
Puntos: 2658
Respuesta: Problema Con consulta mysql

Sólo el duplicado. Este lo responderé cuando llegue a casa, si para entonces no has intentado y entendido como solucionarlo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 19/11/2012, 16:29
Avatar de 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, 4 meses
Puntos: 2658
Respuesta: Problema Con consulta mysql

Sólo el duplicado. Este lo responderé cuando llegue a casa, si para entonces no has intentado y entendido como solucionarlo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 19/11/2012, 17:03
Avatar de carlosloaiza21  
Fecha de Ingreso: julio-2009
Mensajes: 175
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Problema Con consulta mysql

ok Muchas Gracias
__________________
La vida de un hombre es mas interesante si ha fracasado, por que eso quiere decir que ha intentado superarse
  #10 (permalink)  
Antiguo 19/11/2012, 18:42
Avatar de 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, 4 meses
Puntos: 2658
Respuesta: Problema Con consulta mysql

En principio, tendré que reconocer que no leí la primera parte de tu post inicial con el debido detalle. Allí lo que dices necesitar es la cantidad de aprobados y reprobados del semestre, y no el listado de ambos en una sola tabla, como yo entendí al principio.
En el primer caso la consulta a realizar es realmente simple. El segundo caso sí requiere una consulta usando UNION.
Veamos.

Si lo que quieres es solamente las cantidades, puede ser:
Código MySQL:
Ver original
  1.     Semestre,
  2.     SUM(IF(Calificacion>5, 1, 0)) Aprobados,
  3.     SUM(IF(Calificacion<=5, 1, 0)) Reprobados
  4. FROM Calificaciones
  5. WHERE Semestre = 1
  6. GROUP BY semestre;
Como verás, es una consulta senciilla, usando un truco muy habitual para obtener una sumatoria de dos criterios que se evalúan en una sola columna.

La otra forma de verlo, que al principio creí que te referías, si requiere un UNION, y sería:
Si lo que quieres es solamente las cantidades, puede ser:
Código MySQL:
Ver original
  1. SELECT idAlumno, Semestre, Materia, Calificacion
  2.     (SELECT idAlumno, Semestre, Materia, Calificacion
  3.     FROM Calificaciones_Alumnos
  4.     WHERE Calificacion>5
  5.     ORDER BY Calificacion, Materia, idMateria) T1
  6. SELECT idAlumno, Semestre, Materia, Calificacion
  7.     (SELECT idAlumno, Semestre, Materia, Calificacion
  8.     FROM Calificaciones_Alumnos
  9.     WHERE Calificacion<=5
  10.     ORDER BY Calificacion, Materia, idMateria) T2;

Obviamente se trata de cosas diferentes.
Pongo la segunda para que se vea el uso, pero si no me equivoco es la primera la que realmente preguntabas. En esa hay otras formas de lograrlo, pero es la mas simple.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #11 (permalink)  
Antiguo 19/11/2012, 19:18
Avatar de carlosloaiza21  
Fecha de Ingreso: julio-2009
Mensajes: 175
Antigüedad: 14 años, 9 meses
Puntos: 0
Exclamación Respuesta: Problema Con consulta mysql

Cita:
Iniciado por gnzsoloyo Ver Mensaje
En principio, tendré que reconocer que no leí la primera parte de tu post inicial con el debido detalle. Allí lo que dices necesitar es la cantidad de aprobados y reprobados del semestre, y no el listado de ambos en una sola tabla, como yo entendí al principio.
En el primer caso la consulta a realizar es realmente simple. El segundo caso sí requiere una consulta usando UNION.
Veamos.

Si lo que quieres es solamente las cantidades, puede ser:
Código MySQL:
Ver original
  1.     Semestre,
  2.     SUM(IF(Calificacion>5, 1, 0)) Aprobados,
  3.     SUM(IF(Calificacion<=5, 1, 0)) Reprobados
  4. FROM Calificaciones
  5. WHERE Semestre = 1
  6. GROUP BY semestre;
Como verás, es una consulta senciilla, usando un truco muy habitual para obtener una sumatoria de dos criterios que se evalúan en una sola columna.

La otra forma de verlo, que al principio creí que te referías, si requiere un UNION, y sería:
Si lo que quieres es solamente las cantidades, puede ser:
Código MySQL:
Ver original
  1. SELECT idAlumno, Semestre, Materia, Calificacion
  2.     (SELECT idAlumno, Semestre, Materia, Calificacion
  3.     FROM Calificaciones_Alumnos
  4.     WHERE Calificacion>5
  5.     ORDER BY Calificacion, Materia, idMateria) T1
  6. SELECT idAlumno, Semestre, Materia, Calificacion
  7.     (SELECT idAlumno, Semestre, Materia, Calificacion
  8.     FROM Calificaciones_Alumnos
  9.     WHERE Calificacion<=5
  10.     ORDER BY Calificacion, Materia, idMateria) T2;

Obviamente se trata de cosas diferentes.
Pongo la segunda para que se vea el uso, pero si no me equivoco es la primera la que realmente preguntabas. En esa hay otras formas de lograrlo, pero es la mas simple.
Muchas Gracias Efectivamente Es como la Primera forma perdon ahora como puedo definir en donde me mustre la cantidad de alumnos que reprobaron por ejemplo de 1 a 5 materias ??

Gracias
__________________
La vida de un hombre es mas interesante si ha fracasado, por que eso quiere decir que ha intentado superarse
  #12 (permalink)  
Antiguo 20/11/2012, 06:24
Avatar de 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, 4 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)

Etiquetas: tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:08.