Ver Mensaje Individual
  #3 (permalink)  
Antiguo 29/04/2013, 20:02
todosolucionesweb
 
Fecha de Ingreso: abril-2013
Mensajes: 23
Antigüedad: 11 años
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.