Newsgroup: it.comp.appl.access
Titolo: Filtro in una query

Salve amici,
ho una query di Access 2003 con i campi Prodotto, Prezzo e
Data_Attivazione.
Supponiamo i seguenti dati nella query:
Riga    Prodotto     Prezzo  Data_Attivazione
   1     BIO            0,90      04-05-2008
   2     BIO            1,00      01-01-2008
   3     BIO            1,10      07-05-2008
   4     BIO            1,20      15-04-2008
In pratica a me occorre filtrare nella query la riga con la data di
attivazione più recente (quindi più vicina alla data odierna) e deve
portare con se il prezzo di quella data: nell'esempio la stringa SQL
mi deve dare la riga 3 quindi:
  3      BIO             1,10      07-05-2008
grazie molte per l'aiuto
Leo

 ha scritto nel messaggio 
news:c3d29a2c-e77c-4a78...@56g2000hsm.googlegroups.com...


Leo
Filtra Data_Attivazione con
Max(Data_Attivazione) oppure
Puoi filtrare con Riga usando 
DlookUp([Riga];"Tabella";Max(Data_Attivazione))
Ciao
-- 
Roberto da Parma 

 ha scritto nel messaggionews:c3d29a2c-e77c-4a78...@56g2000hsm.googlegroups.com...

ciao Roberto,
essendo che si tratta di un listino articoli enorme,
a me occorre una stringa SQL che mi filtri per ciascun prodotto
quello con data di attivazione più recente con il relativo prezzo.
grazie molte

 ha scritto nel messaggio 
news:dcdb341d-970f-4585...@r66g2000hsg.googlegroups.com...


grazie molte
Eh...che tu abbia due articoli o ne abbia 100.000 è lo stesso...
Fai la query e raggruppi per articolo mentre nel campo data_attivazione 
inserisci come criterio Max.
Non è complicata come query...non posso scriverti l'SQL non conoscendo 
neanche tabelle e campi.


 - Mostra testo tra virgolette -
ok
grazie ancora

 - Mostra testo tra virgolette -
Ciao Leonardo, credo che il suggerimento di Roberto sia insufficiente
rispetto a quello che vuoi ottenere in quanto pur raggruppando per
articolo, avrai sempre il campo Prezzo che ostacolerà il filtro e non
potrai mai avere la funzione Max al campo Data_Attivazione univoca per
articolo.
Ti propongo una soluzione un tantino più complicata ma che ti
restituirà il risultato sperato.
Poniamo che la tabella si chiami "Tabella1" e i campi "Riga",
"Prodotto", "Prezzo", "Data_Attivazione" (praticamente gli stessi del
tuo esempio).
Creerai la prima query che chiamerai "Query1" inserendo il seguente
codice SQL :
SELECT DISTINCT Tabella1.Prodotto, Max(Tabella1.Data_Attivazione) AS
Data_Attivazione
FROM Tabella1
GROUP BY Tabella1.Prodotto;
Poi la seconda query che chiamerai "Query2":
SELECT DISTINCT Tabella1.Prodotto, Tabella1.Data_Attivazione,
Tabella1.Prezzo, Tabella1.Riga
FROM Tabella1
GROUP BY Tabella1.Prodotto, Tabella1.Data_Attivazione,
Tabella1.Prezzo, Tabella1.Riga;
Infine la terza query che chiamerai "Query3":
SELECT Query2.Riga, Query1.Prodotto, Query2.Prezzo,
Query2.Data_Attivazione
FROM Query1 INNER JOIN Query2 ON Query1.Data_Attivazione =
Query2.Data_Attivazione;
Ciao Vladimiro.


omissis
Mi sono accorto che inserendo prodotti diversi con stessa data,
vengono restituiti record duplicati; per ovviare a ciò, nella terza
query ho relazionato oltre al campo "Data_Attivazione", anche il campo
"Prodotto"; per cui cambia il codice SQL della terza query con il
seguente:
SELECT Query2.Riga, Query2.Prodotto, Query2.Prezzo,
Query2.Data_Attivazione
FROM Query1 INNER JOIN Query2 ON (Query1.Data_Attivazione =
Query2.Data_Attivazione) AND (Query1.Prodotto = Query2.Prodotto);
Di nuovo Vladimiro.

 - Mostra testo tra virgolette -
Ciao Vladimiro,
avevo infatti bisogno proprio di questo!
Mi hai dato un grande aiuto!
Te ne sono grato. Una buona giornata a te, momento dopo momento.
Stammi bene
Leo

 - Mostra testo tra virgolette -
Ciao Vladimiro,
hai centrato e risolto il mio problema.
Grazie sincero per la cortese disponibilità e per il prezioso aiuto.
stammi bene.
Leonardo

 - Mostra testo tra virgolette -
Saluti anche a te.
Ciao Vladimiro.