Ver Mensaje Individual
  #6 (permalink)  
Antiguo 26/01/2010, 07:15
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Consulta de access a mysql

Si lo que determina que una tarea está completada es que el ID de esa tarea aparezca en la tabla AVANCE, lo que debe suceder es que la cantidad de tareas diferentes en `Tareas Asignadas` debe ser igual a la cantidad de tareas de ese proyecto en Avance.
Con esa restricción sabemos que esto:
Código MySQL:
Ver original
  1.     AU.*
  2.   FROM
  3.     auditorias AU
  4.     INNER JOIN `asignacion de tareas` AT ON AU.ID_auditoria = AT.Auditoria
  5.   GROUP BY AU.ID_auditoria;
Devolvería todos los datos de las auditorias que tengan tareas asignadas.
De estas auditorías necesitas saber cuáles nolo han completado. Eso se obtiene cruzando una consulta similar con Avance y obtener los ID de las audotirías que tengan al menos un registro en Avance en NULL (en eso estaba bien pensado.
Lo que no es necesario es cruzar en este punto los datos con las otras tablas, que para lo único que sirven es para obtener detalles de las tareas. Eso bien lo puedes hacer con la tabla resultado, y para saber qué tareas se realizaron, pero la consigna que propones no lo dice (regla básica: no poner nada que no se requiera, consume recursos innecesariamente).

En definitiva, algo así:
Código MySQL:
Ver original
  1.     AU.*
  2.   FROM
  3.     auditorias AU
  4.     INNER JOIN `asignacion de tareas` AT ON AU.ID_auditoria = AT.Auditoria
  5.   WHERE
  6.      AU.ID_auditoria NOT IN
  7.           (SELECT AU.ID_auditoria
  8.            FROM auditorias AU
  9.                    INNER JOIN `asignacion de tareas` AT ON AU.ID_auditoria = AT.Auditoria
  10.                    LEFT JOIN `Avance` AV ON AT.Tarea = AV.ID_asignacion
  11.            WHERE AV.ID_asignacion IS NULL
  12.            GROUP BY AU.ID_auditoria) TAV
  13.   GROUP BY AU.ID_auditoria;
La idea de la consulta es que excluya de las auditorias con tareas asignadas aquellas que tengan alguna tarea incompleta
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)