poi facce sape'![]()
poi facce sape'![]()
giust'appunto, ho appena trovato la quadra...
ovvero, ho aggiunto un UNION con solo la gestione per i NOT IN, cosi:
UNION
SELECT DISTINCT tu.IdUtente, tu.Cognome, tu.nome, null as anno, null as mese, null as quindicina,tu.email, ts.Descrizione AS societa , ta.Descrizione as AreaCompetenza, 'Non Caricato' as Esistente
FROM Tab_Utenti tu
Left outer Join Tab_Societa ts on tu.idsocieta=ts.idsocieta
left outer join Tab_AreaCompetenza ta on tu.idAreaCompetenza=ta.idAreaCompetenza
where tu.stato=1 and tu.idutente not in(select idutente from tab_report where (MONTH(Data)='09') and (YEAR(Data)='2011'))
e come estrazione mi sembra OK!!!!
spero di non cantar vittoria troppo presto![]()
Ciao!Originariamente inviato da arw
UNION
SELECT DISTINCT tu.IdUtente, tu.Cognome, tu.nome, null as anno, null as mese, null as quindicina,tu.email, ts.Descrizione AS societa , ta.Descrizione as AreaCompetenza, 'Non Caricato' as Esistente
FROM Tab_Utenti tu
Left outer Join Tab_Societa ts on tu.idsocieta=ts.idsocieta
left outer join Tab_AreaCompetenza ta on tu.idAreaCompetenza=ta.idAreaCompetenza
where tu.stato=1 and tu.idutente not in(select idutente from tab_report where (MONTH(Data)='01') and (MONTH(Data)='12'))
rieccomi con un nuovo problemino forse piu di logica che di statement.. ovvero sempre riguardo a questa query che sto per odiare
il problema è che su una estrapolazione annuale , non mi prende tutti i dati .
MA giustamente perche la NOT IN ha la select che prende gli utenti presenti e in caso annualità, da gennaio a dicembre, ovviamente troverà utenti che però nel mese di agosto(per esempio) non hanno caricato, ma li trova perche in altri mesi invece hanno caricato dati.
Infatti se io eseguo la query mensile , del solo mese di agosto, l'utente che non ha inserimenti fatti esce fuori. Cosa che nell'estrapolazione annuale non esce perche l'utente viene trovato perche ha inserito altri mesi.
Per cui, per una estrapolazione annuale , come devo fare perche mi esca l'utente?
dovrei avere questo risultato:
pippo marzo caricato
pippo agosto non caricato
pippo settembre caricato
....
non ti basta togliere la where sul mese?
in realtà devo mettere tutta la data perche altrimenti mi prede i dati relativi a mesi di anni passati...; per cui la reale select è:
codice:...and tu.idutente NOT IN(select idutente from tab_report where Data>='2011-01-01' and Data<='2011-12-31')![]()
year(data)=2011 non è sufficiente?
si, avrei potuto mettere
where (MONTH(Data)='01') and (MONTH(Data)='12'))
and year(data)=2011
al posto della
where Data>='2011-01-01' and Data<='2011-12-31')
però credo che non sia questo che mi risolve il problema del prende l'utente correttamente.
ho provato a fare cosi:
questa singola select mi estrapola:codice:select idutente, MONTH(Data) as mese from tab_report where Data>='2011-01-01' and Data<='2011-12-31'
pippo GEN
pippo FEB
pippo MAR
pippo APR
pippo MAG
pippo GIU
pippo LUG
pippo SET
per cui correttamente vede che AGOSTO non cè, ma io come la aglomero a tutta la mia query visto che in relata io voglio che mi dia solo AGOSTO
ovvero il mese ce manca...?
devi mettere il risultato in JOIN con una tabella di mesi e vedere cosa manca
SELECT colonne FROM Mesi LEFT JOIN tuorisultato ON Mesi.Mese=tuorisultato.mese WHERE tuorisultato.mese IS NULL
![]()
ora ci provo.... anche se non mi è chiarissimo in quanto io non ho una tabella Mesi ...
oddio, come si potrà ovviare?Originariamente inviato da arw
ora ci provo.... anche se non mi è chiarissimo in quanto io non ho una tabella Mesi ...![]()