Ver Mensaje Individual
  #2 (permalink)  
Antiguo 19/07/2015, 05:20
Avatar de Libras
Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Necesito saber que query debo correr en el esquema dado para obtener el re

si te entendi bien, quieres que nada mas salga el alumno que tiene todas las materias, en este ejemplo Lara vdd??

Código SQL:
Ver original
  1. CREATE TABLE #alumno (
  2. id INT NOT NULL,
  3. nombre VARCHAR(45) NULL,
  4. PRIMARY KEY (id)
  5. );
  6. INSERT INTO #alumno VALUES(1,'Lara');
  7. INSERT INTO #alumno VALUES(2,'Nestor');
  8. INSERT INTO #alumno VALUES(3,'Juan');
  9. INSERT INTO #alumno VALUES(4,'Pedro');
  10. INSERT INTO #alumno VALUES(5,'Jose');
  11. INSERT INTO #alumno VALUES(6,'Igor');
  12. INSERT INTO #alumno VALUES(7,'Steve');
  13. INSERT INTO #alumno VALUES(9,'Otto');
  14. INSERT INTO #alumno VALUES(8,'Bart');
  15. INSERT INTO #alumno VALUES(10,'Lisa');
  16.  
  17.  
  18. CREATE TABLE #materia (
  19. id INT NOT NULL,
  20. nombre VARCHAR(45) NULL,
  21. PRIMARY KEY (id)
  22. );
  23. INSERT INTO #materia VALUES(1,'Math');
  24. INSERT INTO #materia VALUES(2,'English');
  25. INSERT INTO #materia VALUES(3,'Anatomy');
  26. INSERT INTO #materia VALUES(4,'Chinese');
  27. INSERT INTO #materia VALUES(5,'Spanish');
  28. INSERT INTO #materia VALUES(6,'Italian');
  29. INSERT INTO #materia VALUES(7,'Gym');
  30. INSERT INTO #materia VALUES(8,'Sociology');
  31. INSERT INTO #materia VALUES(9,'Magic');
  32. INSERT INTO #materia VALUES(10,'Blood');
  33.  
  34.  
  35. CREATE TABLE #inscripcion (
  36. id_alumno INT NOT NULL,
  37. id_materia INT NOT NULL,
  38. PRIMARY KEY (id_materia, id_alumno));
  39.  
  40. INSERT INTO #inscripcion VALUES(1,1);
  41. INSERT INTO #inscripcion VALUES(1,2);
  42. INSERT INTO #inscripcion VALUES(1,3);
  43. INSERT INTO #inscripcion VALUES(1,4);
  44. INSERT INTO #inscripcion VALUES(1,5);
  45. INSERT INTO #inscripcion VALUES(1,6);
  46. INSERT INTO #inscripcion VALUES(1,7);
  47. INSERT INTO #inscripcion VALUES(1,8);
  48. INSERT INTO #inscripcion VALUES(1,9);
  49. INSERT INTO #inscripcion VALUES(1,10);
  50. INSERT INTO #inscripcion VALUES(2,1);
  51. INSERT INTO #inscripcion VALUES(2,3);
  52. INSERT INTO #inscripcion VALUES(3,1);
  53. INSERT INTO #inscripcion VALUES(3,3);
  54. INSERT INTO #inscripcion VALUES(4,1);
  55. INSERT INTO #inscripcion VALUES(5,1);
  56. INSERT INTO #inscripcion VALUES(5,2);
  57. INSERT INTO #inscripcion VALUES(5,3);
  58. INSERT INTO #inscripcion VALUES(5,5);
  59. INSERT INTO #inscripcion VALUES(5,6);
  60. INSERT INTO #inscripcion VALUES(6,2);
  61. INSERT INTO #inscripcion VALUES(6,4);
  62. INSERT INTO #inscripcion VALUES(6,6);
  63. INSERT INTO #inscripcion VALUES(7,3);
  64. INSERT INTO #inscripcion VALUES(7,4);
  65. INSERT INTO #inscripcion VALUES(8,2);
  66. INSERT INTO #inscripcion VALUES(8,4);
  67. INSERT INTO #inscripcion VALUES(8,7);
  68. INSERT INTO #inscripcion VALUES(9,7);
  69. INSERT INTO #inscripcion VALUES(10,3);
  70.  
  71.  
  72. SELECT nombre FROM(
  73. SELECT t2.nombre,COUNT(t3.nombre) total FROM #inscripcion AS t1
  74. LEFT JOIN #alumno AS t2 ON (t1.id_alumno=t2.id)
  75. LEFT JOIN #materia AS t3 ON (t1.id_materia=t3.id)
  76. GROUP BY t2.nombre) AS t1 WHERE total=(SELECT COUNT(*) FROM #materia)

Con ese query obtenemos lo que necesitas solamente al alumno que tiene tooodas las materias en este caso Lara :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me