Ver Mensaje Individual
  #7 (permalink)  
Antiguo 13/05/2015, 09:36
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: Consulta con 2 INNER JOIN y GROUP BY

Cita:
Iniciado por Pelao Ver Mensaje
No da ningun error, pero no llego al resultado correcto.
El problema lo tengo al agrupar por Sector. Por que al contar la cantidad de alumnos agrupando por Sector me da mas de los que realmente figuran, en cambio si agrupo por Grupos la cantidad de alumnos es correcta, pero no puedo saber el total por Sector.
:(
Pues alli tienes obviamente un caso donde un mismo alumno en un mismo sector,está apareciendo en más de un grupo.
Si la relacion fuese 1:1 entre alumno y grupo, no existirían más alumnos que los que hay en el sector...
Hay tres soluciones:
Código MySQL:
Ver original
  1. SELECT a.sector, g.id Grupo, COUNT(DISTINCT g.id) Grupos, COUNT(a.id_alumno) Alumnos, SUM(h.horas) TotalHs
  2. FROM horas h
  3.   INNER JOIN grupos g ON g.id = h.id_grupo
  4.   INNER JOIN alumnos a ON a.id_grupo = g.id
  5. GROUP BY a.sector, g.id;

Código MySQL:
Ver original
  1. SELECT a.sector, g.id Grupo, COUNT(DISTINCT g.id) Grupos, COUNT(a.id_alumno) Alumnos, SUM(h.horas) TotalHs
  2. FROM horas h
  3.   INNER JOIN grupos g ON g.id = h.id_grupo
  4.   INNER JOIN alumnos a ON a.id_grupo = g.id
  5. GROUP BY a.sector, g.id WITH ROLLUP;

Código MySQL:
Ver original
  1. SELECT a.sector, COUNT(DISTINCT g.id) Grupos, COUNT( DISTINCT a.id_alumno) Alumnos, SUM(h.horas) TotalHs
  2. FROM horas h
  3.   INNER JOIN grupos g ON g.id = h.id_grupo
  4.   INNER JOIN alumnos a ON a.id_grupo = g.id
  5. GROUP BY a.sector;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)