View Full Version : [sql-plus] Problema query
bauletto
02-06-2011, 15:11
Ciao a tutti ho un problema con una query..
Ho un tabella (TABELLA) con i campi id (chiave), oggetto, data. Ogni istanza contiene una data associata ad un particolare oggetto, ad ogni oggetto possono essere associate più date, anche la stessa data più volte.
Vorrei fare una query che mi restituisca per ogni oggetto la data più "grande".
Più facile di così.. ma non riesco a venirne fuori..
Qualcosa tipo:
select oggetto, data
from tabella
where ---- data = max(data) per quell'oggetto ----
ho fatto qualche tentativo annidando query ma niente..
Spero che qualcuno di voi possa aiutarmi, grazie già da adesso!
khelidan1980
02-06-2011, 16:15
select MAX(data) from tabella group by id,oggetto
bauletto
02-06-2011, 16:24
select MAX(data) from tabella group by id,oggetto
mmh, così mi restituisce tutte le date presenti nella tabella..
edit: in effetti basta togliere id e fare group by oggetto e fa proprio quello che mi serve, quando imparerò i casi in cui posso usare group by sarà sempre troppo tardi
grazie mille khelidan1980
khelidan1980
02-06-2011, 16:34
mmh, così mi restituisce tutte le date presenti nella tabella..
edit: in effetti basta togliere id e fare group by oggetto e fa proprio quello che mi serve, quando imparerò i casi in cui posso usare group by sarà sempre troppo tardi
grazie mille khelidan1980
si chiaro avevo dato per scontato che la chiave fosse id,oggetto se id è un progressivo lui logicamente fa n gruppi quanti sono i progressivi quindi lo devi togliere, group by è una funzione molto importante di sql, solo che probabilmente di primo impatto è poco compresa, ma utilissima
bauletto
02-06-2011, 16:49
si chiaro avevo dato per scontato che la chiave fosse id,oggetto se id è un progressivo lui logicamente fa n gruppi quanti sono i progressivi quindi lo devi togliere, group by è una funzione molto importante di sql, solo che probabilmente di primo impatto è poco compresa, ma utilissima
grazie ancora, a questo punto se volessi sapere anche l'id?
Facendo
select id, oggetto, max(data)
from tabella
group by oggetto
restituisce un errore
ERRORE alla riga 1:
ORA-00979: non è un'espressione GROUP BY
:confused:
khelidan1980
02-06-2011, 16:55
grazie ancora, a questo punto se volessi sapere anche l'id?
Facendo
select id, oggetto, max(data)
from tabella
group by oggetto
restituisce un errore
:confused:
eh si, devi fare una join tra tabella e se stessa tramite il campo oggetto,ti restituisce quell'errore perchè tu stai facendo un gruppo con oggetto, ma vuoi un dato che è diverso per le righe del gruppo,lui non sa che id visualizzarti, quindi devi joinare su se stessa e tirare fuori solo l'id corrispondente alla riga della data massima...pensaci, è piu facile da scrivere che da esporre! :)
bauletto
02-06-2011, 17:15
select t1.numero, t2.id_inventario, t2.data_verifica
from verifica_sicurezza t1, (select id_inventario, MAX(data_verifica) data_verifica
from verifica_sicurezza
group by id_inventario) t2
where t1.id_inventario = t2.id_inventario
and t1.data_verifica = t2.data_verifica;
Così, giusto?
edit: non badare ai nomi dei campi, nel primo post li avevo cambiati per semplicità..
khelidan1980
03-06-2011, 18:07
il concetto è quello, così al volo però, senza testarla non mi torna la join sulla data
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.