perfetto e chiaro, optime
grazie a tutti per l'aiuto
perfetto e chiaro, optime
grazie a tutti per l'aiuto
salve, devo aggiungere una cosa alla discussione... cosa che si é appena presentata
applico la select come abbiamo detto
funziona tutto tranne l'ordinamento, ossia
select * from archivio where anno='2013' and tipo='lab' GROUP BY data, fascia order by data desc, fascia desc, ID desc
il problema é questo:
viene estratto correttamente il record interessato, però, mentre le date e le fasce sono correttamente ordinate in senso decrescente, ossia mi prende l'ultima data e all'interno di questa l'ultima fascia, per l' ID invece mi prende sempre il primo, cioé il più basso, come se avessi impostato un ordinamento crescente dell' ID, invece di prendermi il valore più alto, avendo io impostato un ordinamento decrescente come per i campi data e fascia.
esempio:
data 05/12/2013 fascia 5 ID 15 (questo é il record che dovrebbe essere correttamente considerato)
data 05/12/2013 fascia 5 ID 14
data 05/12/2013 fascia 5 ID 13 (questo é il record erroneamente considerato)
data 05/12/2013 fascia 4 ID 12 (questo é il record che dovrebbe essere correttamente considerato)
data 05/12/2013 fascia 4 ID 11
data 05/12/2013 fascia 4 ID 10 (questo é il record erroneamente considerato)
data 05/12/2013 fascia 3 ID 9 (questo é il record che dovrebbe essere correttamente considerato)
data 05/12/2013 fascia 3 ID 8
data 05/12/2013 fascia 3 ID 7 (questo é il record erroneamente considerato)
data 05/12/2013 fascia 2 ID 6 (questo é il record che dovrebbe essere correttamente considerato)
data 05/12/2013 fascia 2 ID 5
data 05/12/2013 fascia 2 ID 4 (questo é il record erroneamente considerato)
data 05/12/2013 fascia 2 ID 3 (questo é il record che dovrebbe essere correttamente considerato)
data 05/12/2013 fascia 2 ID 2
data 05/12/2013 fascia 2 ID 1 (questo é il record erroneamente considerato)
spero di esser stato chiaro
grazie in anticipo a tutti
Ultima modifica di marco.agelao; 05-12-2013 a 11:56
perché senza le funzioni di aggregazione l'animale prende il primo che gli capita a tiro (la order by NON influenza la group by)
ok optime, grazie
però, se ricordi, con il MAX non funzionava con MySQL
che posso fare?
molto strano, dovrebbe. cosa fa esattamente?
probabilmente, se dici così, ho sbagliato qualcosa io
allora, la select completa é
select * from archivio where anno='" & annualita & "' GROUP BY dati_solodata, dati_numerofascia order by dati_solodata desc, dati_numerofascia desc, ID desc
come posso applicare la funzione di aggregazione?
prendi spunto dalla prima select che ti ho postato ("nudi" i campi che metti già nella group by, max() per tutti gli altri che vuoi estrarre)
ok, quindi non metto * ovviamente per indicare tutti i campi da caricare indistintamente, ma li indico tutti singolarmente premettendo max a quelli non coinvolti nel group by, e mantenendo pero' order by per come l'ho impostato, no?
ho capito bene?
piu' tardi avro' modo di provare e ti faro' sapere. grazie intanto
bravo! tra l'altro, mettere * è considerata una bad practice
allora
ho appena provato ma con MySql i campi su cui uso max non li vede proprio
la select completa é
select dati_solodata, dati_numerofascia, max(fascia), max(userid), max(dati_nomegiornosettimana), max(dati) from archivio where anno='" & annualita & "' and dati like'%" & nominativo & "%' GROUP BY dati_solodata, dati_numerofascia order by dati_solodata desc, dati_numerofascia desc, ID desc
ma non va