Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/07/2015, 23:36
enehh
 
Fecha de Ingreso: julio-2015
Mensajes: 2
Antigüedad: 8 años, 9 meses
Puntos: 0
Necesito saber que query debo correr en el esquema dado para obtener el resultado en

Mas abajo hay tres tablas para una db que para las pruebas la uso en sqlite
La query que quiero resolver es una que me liste el nombre de todos los alumnos inscriptos en todas las materias.
Entiendo que se puede resolver con una sola consulta pero las que probe no me sirvieron.

Con:

Código SQL:
Ver original
  1. SELECT m.nombre, COUNT(i.id_materia) AS AlumMat
  2. FROM inscripcion AS i
  3. LEFT JOIN materia AS m
  4. ON m.id=i.id_materia
  5. GROUP BY i.id_materia
  6. ORDER BY AlumMat DESC;

Pude sacar una lista de las materias y cantidad de inscriptos

Comn esta otra.

Código SQL:
Ver original
  1. SELECT a.nombre, COUNT(i.id_materia) AS NumOfMat FROM (alumno AS a
  2. INNER JOIN inscripcion AS i
  3. ON a.id=i.id_alumno)
  4. GROUP BY i.id_materia
  5. HAVING COUNT(i.id_materia) > 4
  6. ORDER BY NumOfMat DESC;

Alumnos incriptos en mas de 4 materias
Se me complico con la lista de alumnos inscriptos en todas las materias.

La idea es que sea SQL lo mas standard posible, si tienen la solucion para algun motor en particular sirve tambien. Logre algo usando VIEWS

Gracias

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

Última edición por gnzsoloyo; 21/07/2015 a las 06:09