Filtro su query access

mercoledì 20 febbraio 2008 - 07.27

lallob Profilo | Newbie

come al solito prima di tutto metto le mani avanti (non sono molto sveglio con access)
Ho un problema:
in una tabella ho sostanzialmente due campi un campo nome ed uno data. La tabella viene compilata online e gli utenti inseriscono il nome, mentre la data si compila in automatico con date()
Vorrei creare una query e applicare un filtro che mi faccia vedere solo gli utenti che hanno le due date più alte. Ad esempi se tre ut. hanno come data 12/01/2007 altri quattro il 18/01/2007 ed altri otto il 04/05/2008 vorrei che si vedessero solo quelli con le due date più alte.
Spero davvero che tra voi MOSTRI DI ACCESS qualcuno voglia aiutarmi, perchè non so dove sbattere la testa.
Ciao a tutti e.... grazie

lbenaglia Profilo | Guru

>in una tabella ho sostanzialmente due campi un campo nome ed
>uno data. La tabella viene compilata online e gli utenti inseriscono
>il nome, mentre la data si compila in automatico con date()
>Vorrei creare una query e applicare un filtro che mi faccia vedere
>solo gli utenti che hanno le due date più alte. Ad esempi se
>tre ut. hanno come data 12/01/2007 altri quattro il 18/01/2007
>ed altri otto il 04/05/2008 vorrei che si vedessero solo quelli
>con le due date più alte.

Supponiamo di avere la tabella Utenti così composta:

UtenteID Nome Data --------- ---------- ------------ 1 Lorenzo 12/01/2007 2 Luca 12/01/2007 3 Andrea 12/01/2007 4 Gianluca 18/01/2007 5 Davide 18/01/2007 6 Alessandro 18/01/2007 7 Germano 18/01/2007 8 David 04/05/2008 9 Massimo 04/05/2008 10 Matteo 04/05/2008 11 Marco 04/05/2008 12 Ester 04/05/2008 13 Elena 04/05/2008 14 Michela 04/05/2008 15 Barbara 04/05/2008

Come prima cosa vado a recuperare in modo distinto tutte le date presenti in tabella.
Di queste date andrò a considerare solo le due più recenti e le andrò a mettere in JOIN con la tabella Utenti per recuperare tutte le righe che soddisfano la condizione:

SELECT U.* FROM Utenti AS U INNER JOIN ( SELECT TOP 2 Data FROM ( SELECT DISTINCT Data FROM Utenti ) AS Q ORDER BY Data DESC ) AS Q2 ON U.Data = Q2.Data;

Eseguendola otterrai:

UtenteID Nome Data --------- ---------- ------------ 15 Barbara 04/05/2008 14 Michela 04/05/2008 13 Elena 04/05/2008 12 Ester 04/05/2008 11 Marco 04/05/2008 10 Matteo 04/05/2008 9 Massimo 04/05/2008 8 David 04/05/2008 7 Germano 18/01/2007 6 Alessandro 18/01/2007 5 Davide 18/01/2007 4 Gianluca 18/01/2007

Se ti serve un ordinamento differente puoi specificare la clausola ORDER BY nella outer query più esterna.

>Ciao a tutti e.... grazie
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

lallob Profilo | Newbie

grazie mille, mi hai salvato da sicura crisi esistenziale.
ciau
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5