ciao,
prova con questa query.
SELECT idTecnico FROM interventi WHERE idEvento IN (1,2,3,4) GROUP BY idTecnico HAVING COUNT(DISTINCT idEvento)<4
Ti restituirà, come richiesto, gli idTecnico 102, 103 e 104, ma non il 101 che ha effettuato tutti e 4 gli eventi.
Sì, la query funziona indipendentemente da quanti idEvento indichi nell'insieme IN. L'importante è che il loro numero venga riportato anche in fondo alla query, nella clausola HAVING.
Tuttavia sorge un problema nel caso in cui ci siano tecnici che non siano MAI intervenuti per gli eventi indicati. Infatti, se un idTecnico non compare nella tabella interventi, non potrà ovviamente esserti restituito dalla query.
Dovresti, casomai, fare una join tra la tabella tecnici e la tabella interventi per assicurarti che qualche tecnico non venga escluso.
SELECT tecnici.idTecnico, interventi.idEvento FROM tecnici LEFT JOIN interventi ON (tecnici.idTecnico=interventi.idTecnico AND interventi.idEvento IN (1,2,3,4)) GROUP BY tecnici.idTecnico HAVING COUNT(DISTINCT interventi.idEvento)<4
ciao
Modificato da BrightSoul il 22 luglio 2011 21.35 -