162 messaggi dal 05 ottobre 2003
Salve ho un tabella in un db mysql formato così:
idIntervento|idTecnico|Idevento|
1 | 101 | 2 |
2 | 101 | 3 |
3 | 102 | 2 |
4 | 101 | 4 |
5 | 101 | 1 |
6 | 102 | 1 |
7 | 103 | 1 |
8 | 104 | 3 |


dove vengono riportati gli interventi di un tecnico per un tale evento.
Ogni operatore può effettuare un intervento per ogni evento.
dovrei sapere con una select da riportare su ireport quali tecnici non hanno fatto interventi negli eventi(1-2-3-4)
in questo caso mi dovrebbe escludere il tecnico 101 perchè ha tutti e 4 gli eventi

tenendo conto che gli eventi sono n e i tecnici n .
11.886 messaggi dal 09 febbraio 2002
Contributi
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.

gli eventi sono n 

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 -

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.