QUERY FUNZIONANTE:
codice:
SELECT ticket.idticket, ticket.chiuso, ticket.assegnatopers, ticket.assegnatoruolo, ticket.numero, ticket.dataapertura, clienti.idcliente, nome, nomeimp, impianto.idimpianto, impianto, impianto.indirizzo, localita, impianto.potenza, provincia, agg.aggiornato_al
FROM ticket
INNER JOIN clienti on ticket.idcliente = clienti.idcliente
INNER JOIN impianto on ticket.idimpianto = impianto.idimpianto
INNER JOIN localita ON impianto.idlocalita = localita.idlocalita
LEFT JOIN (SELECT idticket, MAX(dataagg) AS aggiornato_al FROM ticket_agg GROUP BY idticket ORDER BY aggiornato_al) AS agg ON ticket.idticket= agg.idticket
WHERE ticket.chiuso='no' and impianto.attivo='si' ORDER BY dataapertura, numero, nome, localita, provincia
Io però della riga dell'ultimo aggiornamento ho bisogno di sapere anche i campi "assegnatoruolo" e "assegnatopers" e aggiungendoli alla query come sotto se ho più aggiornamenti non mi visualizza sempre quelli della riga dell'ultimo aggiornamento
codice:
SELECT ticket.idticket, ticket.chiuso, ticket.assegnatopers, ticket.assegnatoruolo, ticket.numero, ticket.dataapertura, clienti.idcliente, nome, nomeimp, impianto.idimpianto, impianto, impianto.indirizzo, localita, impianto.potenza, provincia, agg.aggiornato_al, agg.assegnatoruolo_agg, agg.assegnatopers_agg
FROM ticket
INNER JOIN clienti on ticket.idcliente = clienti.idcliente
INNER JOIN impianto on ticket.idimpianto = impianto.idimpianto
INNER JOIN localita ON impianto.idlocalita = localita.idlocalita
LEFT JOIN (SELECT idticket, MAX(dataagg) AS aggiornato_al, assegnatoruolo as assegnatoruolo_agg, assegnatopers as assegnatopers_agg FROM ticket_agg GROUP BY idticket) AS agg ON ticket.idticket= agg.idticket
WHERE ticket.chiuso='no' and impianto.attivo='si'
ORDER BY dataapertura, numero, nome, localita, provincia
In quel modo MAX(dataagg) AS aggiornato_al è corretto in quanto è la data ultima modifica.
Però non è corretto aggiornato_al, assegnatoruolo as assegnatoruolo_agg, assegnatopers as in quanto essendoci più aggiornamenti non mi prende necessariamente quelli dell'ultimo aggiornamento.
Su singolo ticket funziona così... però non è adattabile in quanto seleziono solo una riga.
codice:
SELECT idticket, dataagg AS aggiornato_al, assegnatoruolo as assegnatoruolo_agg, assegnatopers as assegnatopers_agg FROM ticket_agg WHERE idticket=3 ORDER BY aggiornato_al desc LIMIT 1
Grazie