158 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 .
5.610 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 -

- So what you're saying is, if we get in trouble, there's no one to help us out?
- I'm afraid not.
- Fantastic!

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.
Community
Ultimi messaggi
UTENTI ONLINE
    In primo piano

    I più letti di oggi

    Media
    In evidenza
    MISC