Ver Mensaje Individual
  #2 (permalink)  
Antiguo 02/07/2013, 14:43
Avatar de huesos52
huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 3 meses
Puntos: 360
Respuesta: saber cuantos cursos toman los alumnos, en una sola consulta

Mira este pequeño laboratorio

Código SQL:
Ver original
  1. CREATE TABLE alumnos(id_alumno  INTEGER PRIMARY KEY,nombre VARCHAR(30));
  2.  
  3. CREATE TABLE cursos(id_curso  INTEGER PRIMARY KEY,nombre VARCHAR(30));
  4.  
  5. CREATE TABLE alumno_curso(id_alumno INTEGER,id_curso INTEGER,
  6. CONSTRAINT fk_alumnos FOREIGN KEY (id_alumno) REFERENCES alumnos(id_alumno),
  7. CONSTRAINT fk_cursos FOREIGN KEY (id_curso) REFERENCES cursos(id_curso));
  8.  
  9. INSERT INTO alumnos VALUES(1,'Daniel');
  10. INSERT INTO alumnos VALUES(2,'Monica');
  11. INSERT INTO alumnos VALUES(3,'Julieth');
  12.  
  13.  
  14. INSERT INTO cursos VALUES(1,'PHP');
  15. INSERT INTO cursos VALUES(2,'SQL');
  16. INSERT INTO cursos VALUES(3,'JAVA');
  17.  
  18. INSERT INTO alumno_curso VALUES(1,1);
  19. INSERT INTO alumno_curso VALUES(1,2);
  20. INSERT INTO alumno_curso VALUES(2,2);
  21. INSERT INTO alumno_curso VALUES(3,3);
  22. INSERT INTO alumno_curso VALUES(3,1);
  23.  
  24. SELECT al.nombre, array_agg(cu.nombre)
  25. FROM alumnos al
  26. INNER JOIN alumno_curso ac
  27. ON al.id_alumno=ac.id_alumno
  28. INNER JOIN cursos cu
  29. ON ac.id_curso=cu.id_curso
  30. GROUP BY al.nombre;
  31.  
  32. "Daniel";"{PHP,SQL}"
  33. "Julieth";"{JAVA,PHP}"
  34. "Monica";"{SQL}"
__________________
Without data, You are another person with an opinion.
W. Edwads Deming