Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/05/2009, 11:08
Avatar de Seixas
Seixas
 
Fecha de Ingreso: mayo-2004
Ubicación: Barcelona
Mensajes: 60
Antigüedad: 19 años, 11 meses
Puntos: 0
Pregunta Recuperar lista con campo que sea un SELECT de otra tabla

Hola a todos,

quería pedir ayuda o consejo sobre una sentencia SQL bastante complicada que me ha tocado construir y realmente no sé cómo resolverla. El caso real es bastante lioso y usa muchas tablas, así que expongo una versión simplificada.

Las tablas que tengo son:

Alumnos (nif, nombre)
Pruebas (id, asignatura)
Examenes (alumno, prueba, evaluado, nota) donde alumno y prueba son claves foráneas

Es por tanto, una relación N:M donde Examenes es la tabla de relación.

Pues bien, lo que quiero hacer es una consulta que me devuelva todos los estudiantes con su nif, nombre y un campo con el número de exámenes que tiene pendientes de ser evaluados (evaluado a FALSE).

La consulta que hasta ahora he construido es esta:

SELECT Al.*, (SELECT COUNT(prueba) FROM Examenes WHERE evaluado = FALSE AND alumno = Al.nif) AS pendientes FROM Alumnos Al;

El problema que me encuentro es que dentro de la subconsulta para el campo "pendientes" no sabe identificar para cada uno de los alumnos de la tabla, es decir, Al.nif no lo entiende. ¿Hay alguna manera de solventar esto?

¿Alguien lo haría de otra manera?

Mi idea sería conseguirlo sin tener que hacer nuevos campos en la tabla alumno, siempre que fuera posible.

Gracias por cualquier sugerencia que me podais hacer.