
29/04/2013, 20:02
|
| | Fecha de Ingreso: abril-2013
Mensajes: 23
Antigüedad: 11 años, 9 meses Puntos: 1 | |
Respuesta: Obtener tuplas con valores repetidos Julio, en relación a tu consulta, podrías recuperar los estudiantes que están viendo más de una materia como sigue:
SELE nombre, COUNT(*) as cuenta FROM estudiante GROUP BY nombre HAVING cuenta > 1
Sin embargo, creo que podrías normalizar un poco más tu base de datos. Por ejemplo, podrías plantear
Estudiante
id - integer PK
dni - unique
nombre - varchar
apellido - varchar
materia - integer FK (Materia)
Materia
id - integer PK
nombre - varchar
La consulta entonces quedaría
SELECT a.dni, COUNT(*) as cuenta FROM estudiante a, materia b WHERE a.materia = b.id GROUP BY a.dni HAVING cuenta > 1
Entonces si la cuenta es mayor que uno aparecerá en los resultados y significa que estará cursando más de una materia. Tambien si necesitas los datos completos de los que están cursando dos o más materias podrías hacerlo en dos pasos (quizás en uno con subconsultas):
1) SELECT a.dni as doc, COUNT(*) as cuenta FROM estudiante a, materia b WHERE a.materia = b.id GROUP BY doc HAVING cuenta > 1 INTO TABLE mas1materia
2) SELECT * FROM estudiante a, materia b WHERE a.materia = b.id AND a.dni EXISTS (SELECT doc FROM mas1materia)
Espero te haya servido y no confundido!
Saludos. |