Consulta SQL; Listar TODOS los alumnos que cursen determinado curso.
Publicado por Agustin Tomas Larghi (2 intervenciones) el 05/11/2011 14:40:46
Hola, hace ya un día que estoy peliando con la misma f0cking consulta de SQL, es sencillo pero a la vez muy molesto porque todas las soluciones que me han propuesto mis profesores y mis compañeros tiran resultados erroneos. Realmente simple, es lo siguiente:
Listar nombre y apellido de los alumnos que hayan cursado todos los cursos.
Acá tienen la tabla para hacerse una idea.
PERSONA = (DNI, Apellido, Nombre, Fecha_Nacimiento, Estado_Civil, Genero)
ALUMNO = (DNI, Legajo, Año_Ingreso)
PROFESOR = (DNI, Matricula, Nro_Expediente)
TITULO = (Cod_Titulo, Nombre, Descripción)
TITULO-PROFESOR = (Cod_Titulo, DNI, Fecha)
CURSO = (Cod_Curso, Nombre, Descripción, Fecha_Creacion, Duracion)
ALUMNO-CURSO = (DNI, Cod_Curso, Año, Desempeño, Calificación)
PROFESOR-CURSO = (DNI, Cod_Curso, Fecha_Desde, Fecha_Hasta)
Yo ya trate con los siguientes razonamientos
1) Usar conjuntos; saco el conjunto de los alumnos que no cursaron ninguna materia y se lo resto al conjunto de alumnos en general, con un pequeño problema; el complemento de NINGUNO no es TODOS, sino ALGUNOS
2) Usar NOT EXISTS; Lo encare asi "Los alumnos que no hayan no cursado ninguna materia", el resultado es el mismo que con conjuntos, me devuelve los alumnos que hayan cursado al menos 1 materia
3) Usar COUNT; este si funciona, pero es recontra ineficiente, ya que ha recibido tantas criticas estoy un poco desesperado por encontrar una consulta que haga lo que el enunciado pide y no use COUNT
Si ha alguno de ustedes se les ocurre alguna idea, se los agradecería un montón, además cualquier código que se les venga a la mente, si quieren lo publican y yo lo tiro en la base de datos y les digo que tal salio.
Muchas gracias por detenerse a leer.
Aproposito, acá les dejo el link del tema donde publique el código del COUNT:
http://foro.elhacker.net/desarrollo_web/consulta_sqllistar_elementos_que_estan_presentes_en_todos_los_elementos_de_otra-t343529.0.html
Listar nombre y apellido de los alumnos que hayan cursado todos los cursos.
Acá tienen la tabla para hacerse una idea.
PERSONA = (DNI, Apellido, Nombre, Fecha_Nacimiento, Estado_Civil, Genero)
ALUMNO = (DNI, Legajo, Año_Ingreso)
PROFESOR = (DNI, Matricula, Nro_Expediente)
TITULO = (Cod_Titulo, Nombre, Descripción)
TITULO-PROFESOR = (Cod_Titulo, DNI, Fecha)
CURSO = (Cod_Curso, Nombre, Descripción, Fecha_Creacion, Duracion)
ALUMNO-CURSO = (DNI, Cod_Curso, Año, Desempeño, Calificación)
PROFESOR-CURSO = (DNI, Cod_Curso, Fecha_Desde, Fecha_Hasta)
Yo ya trate con los siguientes razonamientos
1) Usar conjuntos; saco el conjunto de los alumnos que no cursaron ninguna materia y se lo resto al conjunto de alumnos en general, con un pequeño problema; el complemento de NINGUNO no es TODOS, sino ALGUNOS
2) Usar NOT EXISTS; Lo encare asi "Los alumnos que no hayan no cursado ninguna materia", el resultado es el mismo que con conjuntos, me devuelve los alumnos que hayan cursado al menos 1 materia
3) Usar COUNT; este si funciona, pero es recontra ineficiente, ya que ha recibido tantas criticas estoy un poco desesperado por encontrar una consulta que haga lo que el enunciado pide y no use COUNT
Si ha alguno de ustedes se les ocurre alguna idea, se los agradecería un montón, además cualquier código que se les venga a la mente, si quieren lo publican y yo lo tiro en la base de datos y les digo que tal salio.
Muchas gracias por detenerse a leer.
Aproposito, acá les dejo el link del tema donde publique el código del COUNT:
http://foro.elhacker.net/desarrollo_web/consulta_sqllistar_elementos_que_estan_presentes_en_todos_los_elementos_de_otra-t343529.0.html
Valora esta pregunta
0