[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Ultimo luogo conosciuto in SQL



On 28/03/21 23:20, Leonardo Boselli wrote:

select titolo,inventario,dove,quando from pulizia where titolo="parametro" and dove>0 …

mi servirebbe un group by titolo,inventario ma che anziché farmi vedere solo un record mi faccia vedere il record con il quando più alto (ossia il record più recente).

questo dovrebbe fare quanto chiedi

select titolo,inventario,dove,quando
 from pulizia
 where titolo="parametro"
 and dove>0
and quando = (select max(quando) from pulizia where titolo="parametro" and dove>0 group by titolo,inventario)

però potrebbe tornare più record se è possibile che ci siano due "quando" con gli stessi valori.

Se i timestamp sono tutti univoci, allora puoi semplificare ulteriormente con

select titolo,inventario,dove,quando
 from pulizia
 where titolo="parametro"
and quando = (select max(quando) from pulizia where titolo="parametro" and dove>0 group by titolo,inventario)

A seconda del database potresti ottimizzare ulteriormente la precedente usando l'indicatore univoco di riga interno del database (supponendo qui che sia oid)

select titolo,inventario,dove,quando
 from pulizia
where oid = (select min(oid) from pulizia where titolo="parametro" and dove>0 group by titolo,inventario having quando >= max(quando))

In ogni caso se hai solo decine di migliaia di record penso non noterai nessuna la differenza... sempre che siano stati creati gli indici appropriati (in questo caso su titolo), ma probabilmente su così pochi record e su una sola tabella l'uso dell'indice non serve e anzi potrebbe solo rallentare le varie operazioni (poi dipende da tanti aspetti: database, supporto su cui sono i tablespace, frammentazione, ...).

Nota: la ricerca per titolo, su un libro, non la ritengo appropriata, poiché lo stesso titolo può essere stato usato per libri differenti, sia di autori differenti sia dello stesso autore (può riferirsi ad edizioni differenti dello stesso libro, sia perché l'autore l'ha revisionato, sia perché la traduzione è stata revisionata o rifatta da altro traduttore). Spero che nella tabella vi siano presenti anche altre colonne per poter identificare in modo corretto un libro.

Ciao
Davide

--
Elenco di software libero: http://tinyurl.com/eddgj
GNU/Linux User: 302090: http://counter.li.org
Non autorizzo la memorizzazione del mio indirizzo su outlook



Reply to: