Ver Mensaje Individual
  #2 (permalink)  
Antiguo 20/02/2010, 11:19
jurena
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Problema con una consulta

SELECT i.Nombre FROM INVESTIGADOR i INNER JOIN ASIGNADO_A a USING(DNI_Investigador) INNER JOIN PROYECTO p USING(Código_Proyecto) GROUP BY i.DNI_Investigador HAVING COUNT(DISTINCT a.Codigo_Proyecto) = SELECT COUNT(DISTINCT p.Codigo_Proyecto) FROM PROYECTO

No la he probado.
Creo que otra opción más eficiente sería con un doble anidamiento de NON EXISTS.
Este es un ejemplo sacado del manual de MySqL
Cita:
•¿Qué clase de tienda hay en todas las ciudades?
SELECT DISTINCT store_type FROM Stores S1
WHERE NOT EXISTS (
SELECT * FROM Cities WHERE NOT EXISTS (
SELECT * FROM Cities_Stores
WHERE Cities_Stores.city = Cities.city
AND Cities_Stores.store_type = Stores.store_type));
El último ejemplo es un doblemente anidado NOT EXISTS . Esto es, tiene una cláusula NOT EXISTS dentro de otra NOT EXISTS. Formalmente, responde a la pregunta “¿existe una ciudad con una tienda que no esté en Stores?” Sin embargo, es más fácil decir que un NOT EXISTS responde a la pregunta “¿es x TRUE para todo y?”

Haz alguna prueba y creo que lo sacarás