Newsgroup: it.comp.appl.access
Titolo: ultimo record inserito

scusate la mia ignoranza
ma se io devo fare una select e devo estrarre l'ultimo record inserito come
faccio?
select * from tabella where id =

 ha scritto nel messaggio 
news:45a5fb06$0$4253$4faf...@reader1.news.tin.it...

sull'ID?
SELECT Last(Tua_Tabella.ID) AS UltimoRecord FROM Tua_Tabella
-- 
-- 
Ciao
Pablitomf (Maurizio Facciuti)
-----------------------------------------------------------------
Access: 97, 2000, XP e 2003
ASP
-----------------------------------------------------------------
http://www.accessgroup.it/
-----------------------------------------------------------------
Il mio motto :
""Non mi fido molto delle statistiche, perchč un uomo con la testa nel forno
acceso e i piedi nel congelatore statisticamente ha una temperatura media." 

 SELECT Last(Tua_Tabella.ID) AS UltimoRecord FROM Tua_Tabella
Per cui, diverrà :
SELECT Tua_Tabella.ID, Tua_Tabella.* FROM Tua_Tabella WHERE 
(((Tua_Tabella.ID) In (SELECT Last(Tua_Tabella.ID) AS UltimoRecord FROM 
Tua_Tabella)));
-- 
-- 
Ciao
Pablitomf (Maurizio Facciuti)
-----------------------------------------------------------------
Access: 97, 2000, XP e 2003
ASP
-----------------------------------------------------------------
http://www.accessgroup.it/
-----------------------------------------------------------------
Il mio motto :
""Non mi fido molto delle statistiche, perchè un uomo con la testa nel forno


 Pablitomf (Maurizio Facciuti)
Penso non sia corretta in quanto LAST è una funzione di aggregazione e
se i campi presi dalla query sono più di 1(come in questo caso)
dovrebbe servire il GROUP BY in fondo...
Alternativa è questa:
SELECT TOP 1 * FROM T1 ORDER BY Id DESC
oppure
SELECT TOP 1 * FROM T1 ORDER BY CampoData DESC
@Alex

 Tua_Tabella)));
Penso non sia corretta in quanto LAST è una funzione di aggregazione e
se i campi presi dalla query sono più di 1(come in questo caso)
dovrebbe servire il GROUP BY in fondo...
Alternativa è questa:
SELECT TOP 1 * FROM T1 ORDER BY Id DESC
oppure
SELECT TOP 1 * FROM T1 ORDER BY CampoData DESC
@Alex
[Risposta]
Last è una funzione di aggregazione si, ma fatta (come da premessa) su un 
campo univoco come l'ID contatore; per cui, questo Last, prende di fatto 
l'ultimo inserito;
A questo punto in una semplice SELECT Tua_Tabella.ID, Tua_Tabella.* FROM 
Tua_Tabella che prende tutti i record, si può creare un filtro con un 
classico WHERE (((Tua_Tabella.ID) è uguale al valore della select 
precedente, ovvero : In (SELECT Last(Tua_Tabella.ID) AS UltimoRecord FROM 
Tua_Tabella))).
Non credi?
... questo ovviamente prescindendo dal fatto che le tue soluzioni sono 
valide. ;-)
-- 
-- 
Ciao
Pablitomf (Maurizio Facciuti)


 ha scritto
nel messaggio news:eo54mv$3dv$1...@tdi.cu.mi.it...

scusate l'intromissione, ma se volessi invece estrarre l'ultimo record
inserito in una tabella, però filtrandolo rispetto a un valore di un
campo(nel mio caso "tipologia")  , pero' riferendosi invece che all'ID
(contatore) a un campo di incremento numerico manuale. ?
grazie
fabio

 Pablitomf (Maurizio Facciuti)
Magari sbaglio Maurizio, ma io sostengo che:
Questa Funziona:
SELECT Last(Tua_Tabella.ID) AS UltimoRecord FROM Tua_Tabella
Mentre questa, che hai suggerito nel 2° post No..., per i motivi di
cui sopra:
SELECT Tua_Tabella.ID, Tua_Tabella.* FROM Tua_Tabella WHERE
(((Tua_Tabella.ID) In (SELECT Last(Tua_Tabella.ID) AS UltimoRecord FROM
Tua_Tabella)));
Prova anche tu, se hai la possibilità a vedere se ho sbagliato io
qualche passaggio.
@Alex

qualche passaggio.
Mi avevi fatto dubitare... :-D
...ma funziona correttamente...
daltronde quale sarebbe il motivo per cui non dovrebbe?
in effetti è un SQL semplice filtrato dal risultato un "In (Select...)" che 
restituisce l'ultimo ID inserito... per cui... ecco per intero l'ultimo 
record che interessa.
di fatti l'aggregazione del last avviene sulla query che da il parametro di 
filtro... e non potrà mai dare più record in queste condizioni se scelgo 
Last... ammenochè non inserisca più campi nella stessa (ma non è così).
;-)

 (contatore) a un campo di incremento numerico manuale. ?
SELECT Max(Tua_Tabella.Tuo_Campo_Incremento) AS VeloreMassimo, 
Tua_Tabella.Tuo_Campo_Tipologia FROM Tua_Tabella GROUP BY 
Tua_Tabella.Tuo_Campo_Tipologia HAVING 
(((Tua_Tabella.Tuo_Campo_Tipologia)="tuo_testo_tipologia")); 

 ;-)
Porta pazienza ma ogni tanto perdo qualche colpo.
@Alex


Mi faccio forte di una cosa che ho appreso proprio oggi da Giorgio Rancati.
----
Uso della variabile @@Identity nei database di Access
http://www.riolab.org/viewrisorsa.asp?id=1
----
Buona lettura.
--
PBsoft di Gabriele Bertolucci
www.pbsoft.it
skype:pbsoftsolution