Newsgroup: it.comp.appl.access
Titolo: Query o View

Ciao a tutti,
devo attraversare un momento di confusione e non riesco a fare questo:
devo fare una query che selezioni i record che contengono il valore massimo
in un certo campo.
In pratica una query raggruppata che pero' selezioni l'intero record, ossia:
Tabella Abbonamenti:
IDAbbonamento, IDCliente, DataAbbonamento, Altri dati...
Io devo selezionare le righe che, a parita' di IDCliente, contengono il
valore massimo in DataAbbonamento.
La query di raggruppamento parrebbe una soluzione, ma come ricavo
IDAbbonamento relativo a quella data?
Sib

"Sib" <si...@SPAMiol.it> ha scritto nel messaggio
news:UUmwa.167487$K35.3...@news2.tin.it...

Devi preparare una query che raggruppa per cliente e ti restituisce il max
data abbonamento.
Poi fai un'altra query sulla tabella in join con la query di ci sopra sui
campi cliente e data.
Infine prendi tutto il record della tabella...
Antonio

"Sib" <si...@SPAMiol.it> ha scritto nel messaggio
news:UUmwa.167487$K35.3...@news2.tin.it...

Se devi ottenere solamente l'IDAbbonamento relativo al valore massimo della
DataAbbonamento di un determinato cliente, prova con:
MioID = DLookup("IDAbbonamento", "[Tabella Abbonamenti]", _
"IDCliente =" & Me!MioCliente & " And DataAbbonamento =#" & _
Format(DMax("DataAbbonamento", "[Tabella Abbonamenti]", _
"IDCliente=" & Me!MioCliente), "mm/dd/yyyy") & "#")
dove MioCliente è il controllo che contiene l?IDCliente del quale si vuole
conoscere l'IDAbbonamento con la DataAbbonamento maggiore.
-- 
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 Infine prendi tutto il record della tabella...
Ti ringrazio, oggi sono fuso, ho troppi pensieri per la testa.
Ciao
sib

 conoscere l'IDAbbonamento con la DataAbbonamento maggiore.
Grazie, pero' dovevo pescare tutto il record
ciao
sib

 Ti ringrazio, oggi sono fuso, ho troppi pensieri per la testa.
Sei passato dalla prima volta che fai cilecca alla seconda, alla seconda
volta che fai cilecca alla prima ?!?!?
He eeh ehehehhee ehe ehehe
Antonio


Complimenti Robč
MAssimiliano
--------------------------------
Inviato via 
http://usenet.libero.it

"Sib" <si...@SPAMiol.it> ha scritto nel messaggio
news:UUmwa.167487$K35.3...@news2.tin.it...

Forse è un "marchingegno", però funziona:
una Query per Raggruppare gli IDCliente
Una Query che include la prima query e i campi data e abbonamento:
    SELECT QryRaggruppaCli.IDCliente, Tabella2.IDCliente,
Tabella2.IDAbbonamento, Tabella2.DataAbbonamento
FROM QryRaggruppaCli INNER JOIN Tabella2 ON QryRaggruppaCli.IDCliente =
Tabella2.IDCliente
WHERE
(((Tabella2.DataAbbonamento)=DMax("[DataAbbonamento]","Tabella2","Tabella2.I
DCliente = " & [QryRaggruppaCli].[IDCliente])));
Ciao Ale

Sib ha scritto:

Per queste cose esistono i sottoquery:
SELECT a.IDAbbonamento, a.IDCliente, a.DataAbbonamento
FROM Abbonamenti AS a
WHERE  a.DataAbbonamento = (SELECT Max(DataAbbonamento)
FROM Abbonamenti WHERE IDCliente = a.IDCliente)
È il metodo standard di SQL.
Con JET invece spesso la versione con 2 query (come ha
scritto Antonio) è piu veloce. Ma si debbe sempre provare tutti
e due metodi perché il modo come la query viene gestito dalla
query engine varia (indici, numeri di record ecc.).
-- 
cu
Karl
*********
Access-FAQ (tedesco): 
http://www.donkarl.com

 ha scritto nel messaggio
news:APnwa.118703$DT4.3...@twister1.libero.it...

What's?
Sib

 DataAbbonamento maggiore.
"elli' c'avevo il problema",
perche' negli adp non si puo' usare questa sintassi nelle viste.
ti ringrazio molto ugualmente.
Ciao
Sib

 ha scritto nel messaggio

e infatti le difficolta' le sto incontrando scontrandomi con la sintassi di
SQL Server.
provero' subito questa tua soluzione.
Grazie
Ciao
Sib
PS vedi che quel discorso vale sempre.

> Per queste cose esistono i sottoquery:
adesso credo debb'essere "le sottoquery".


 adesso credo debb'essere "le sottoquery".
Giusto, in italiano si usa il femminile per le query e sottoquery.
Ciao
Sib

 Giusto, in italiano si usa il femminile per le query e sottoquery.
Spesso è difficile per me di indovinare il genere in particolare
con parole straniere come questa. Qualche anno fa mi
sono meravigliato che non esiste una parola italiana
per "query" in contrario al tedesco o francese.
Invece per funzioni come DLookUp, DateSerial ecc.
è meglio per voi che MS non ho fatto le brutte traduzioni
come purtroppo esistono nella versione tedesca.
Almeno mi sembra perché tutta gente qui usa l'espressioni
inglesi anche se si tratta di un espressione non di VBA.


 inglesi anche se si tratta di un espressione non di VBA.
Ti sembra giusto infatti.
Gia' ci bastano gli scambi tra virgole e punti e virgola, figurati se
cambiassero anche i nomi delle funzioni.
Nelle vecchie versioni c'erano alcuni termini tradotti in italiano (Maschere
invece di Forms e cosi' via) ora per fortuna l'hanno smessa.
Sib