Si applica a
Access 2010

Questo articolo spiega come usare le query dei primi valori e dei totali per trovare le date più recenti o meno recenti in un set di record. In questo modo è possibile rispondere a diverse domande aziendali, ad esempio quando un cliente ha effettuato l'ultimo ordine o quali cinque trimestri sono stati i migliori per le vendite, per città.

Contenuto dell'articolo

Panoramica

È possibile classificare i dati ed esaminare gli elementi con il rango più alto usando una query dei primi valori. Una query dei primi valori è una query di selezione che restituisce un numero specificato o la percentuale di valori dalla parte superiore dei risultati, ad esempio le cinque pagine più popolari in un sito Web. È possibile usare una query dei primi valori su qualsiasi tipo di valori, che non devono necessariamente essere numeri.

Per raggruppare o riepilogare i dati prima di classificarli, non è necessario usare una query dei primi valori. Si supponga, ad esempio, che è necessario trovare i numeri relativi alle vendite in una data specificata per ogni città in cui opera l'azienda. In questo caso, le città diventano categorie perché è necessario trovare i dati per ogni città, quindi si usa una query di totalizzazione.

Quando si usa una query dei primi valori per trovare i record che contengono le date più recenti o meno recenti in una tabella o in un gruppo di record, è possibile rispondere a un'ampia gamma di domande aziendali, ad esempio:

  • Chi ha registrato il maggior numero di vendite negli ultimi tempi?

  • In che data un cliente ha effettuato l'ultimo ordine?

  • Quando compirà i prossimi tre compleanni nella squadra?

Per creare una query dei primi valori, iniziare creando una query di selezione. Quindi, ordina i dati in base alla tua domanda, che tu stia cercando la parte superiore o inferiore. Se è necessario raggruppare o riepilogare i dati, trasformare la query di selezione in una query di totalizzazione. È quindi possibile usare una funzione di aggregazione, ad esempio Max o Min , per restituire il valore più alto o più basso oppure Primo o Ultimo per restituire la data più recente o meno recente.

Questo articolo presuppone che i valori di data usati abbiano il tipo di dati Data/ora. Se i valori di data si trovano in un campo di testo, .

È consigliabile usare un filtro invece di una query dei primi valori

Un filtro è in genere migliore se si ha in mente una data specifica. Per determinare se creare una query dei primi valori o applicare un filtro, tenere presenti le considerazioni seguenti:

  • Per restituire tutti i record in cui la data corrisponde, è precedente o successiva a una data specifica, usare un filtro. Ad esempio, per visualizzare le date per le vendite tra aprile e luglio, applicare un filtro.

  • Se si vuole restituire un determinato numero di record che contengono le date più recenti o più recenti in un campo e non si conoscono i valori di data esatti o che non sono importanti, creare una query dei primi valori. Ad esempio, per visualizzare i cinque trimestri di vendita migliori, usare una query dei primi valori.

Per altre informazioni sulla creazione e l'uso di filtri, vedere l'articolo Applicare un filtro per visualizzare i record selezionati in un database di Access.

Inizio pagina

Preparare i dati di esempio da seguire insieme agli esempi

I passaggi descritti in questo articolo usano i dati nelle tabelle di esempio seguenti.

Tabella Dipendenti   

Cognome

Nome

Address

Città

Egion CountryOrR

Data di nascita

Data di assunzione

Ruspini

Davide

Piazza Martedì 28

Milano

Italia

05 feb 1968

10 giu 1994

Martino

Agostino

Via Giovedì 47

Bologna

Italia

22 mag 1957

22-nov-1996

Sagese

Diego

3122 75a Ave. S.W.

Milano

Italia

11 nov 1960

11 mar 2000

Tanara

Marco

Corso Venerdì 68

Piacenza

Italia

22 mar 1964

22 giu 1998

Monaco

Massimiliano

Via Domenica 25

Modena

Italia

05 giu 1972

05 giu 2002

Guaita

Daniela

Via Mercoledì 8

Milano

Italia

23 gen 1970

23 apr 1999

Garghentini

Davide

Piazza Venerdì 72

Parma

Italia

14 apr 1964

14 ott 2004

Giorgi

Adriana

Via Martedì 58

Torino

Italia

29 ott 1959

29 mar 1997

Tabella EventType   

ID tipo

Tipo di evento

1

Lancio del prodotto

2

Funzione aziendale

3

Funzione privata

4

Raccolta fondi

5

Fiera

6

Lezione

7

Concerto

8

Mostra

9

Manifestazioni

Tabella Clienti   

ID cliente

Società

Contatto

1

Contoso, Ltd. Graphic

Carmelo Barese

2

Tailspin Toys

Raffaella Pagnotto

3

Fabrikam

Filippa Bruno

4

Wingtip Toys

Mattia Trentini

5

A. Datum

Francesca Lombo

6

Adventure Works

Cataldo Capon

7

Design Institute

Sofia Mancini

8

School of Fine Art

Irma Palermo

Tabella Eventi   

EventID

Tipo di evento

Cliente

Data evento

Prezzo

1

Lancio del prodotto

Contoso, Ltd.

4/14/2011

€ 10.000

2

Funzione aziendale

Tailspin Toys

4/21/2011

€ 8.000

3

Fiera

Tailspin Toys

01.05.11

€ 25.000

4

Mostra

Graphic Design Institute

5/13/2011

€ 4.500

5

Fiera

Contoso, Ltd.

5/14/2011

€ 55.000

6

Concerto

School of Fine Art

5/23/2011

€ 12.000

7

Lancio del prodotto

A. Datum

6/1/2011

€ 15.000

8

Lancio del prodotto

Wingtip Toys

6/18/2011

€ 21.000

9

Raccolta fondi

Adventure Works

6/22/2011

€ 1.300

10

Lezione

Graphic Design Institute

6/25/2011

€ 2.450

11

Lezione

Contoso, Ltd.

4/7/2011

€ 3.800

12

Manifestazioni

Graphic Design Institute

4/7/2011

€ 5.500

Nota: La procedura descritta in questa sezione presuppone che le tabelle Clienti e Tipo di evento corrispondano al lato "uno" di una relazione uno-a-molti con la tabella Eventi. In questo caso, la tabella Eventi condivide i campi ID cliente e ID tipo. Le query di totalizzazione descritte nelle sezioni successive non funzionano senza queste relazioni.

Incollare i dati di esempio nei fogli di lavoro di Excel

  1. Avviare Excel. Si apre una cartella di lavoro vuota.

  2. Premere MAIUSC+F11 per inserire un foglio di lavoro (sono necessari quattro).

  3. Copiare i dati di ogni tabella di esempio in un foglio di lavoro vuoto. Includere le intestazioni di colonna (la prima riga).

Creare tabelle di database dai fogli di lavoro

  1. Selezionare i dati del primo foglio di lavoro, incluse le intestazioni di colonna.

  2. Fare clic con il pulsante destro del mouse sul riquadro di spostamento e quindi scegliere Incolla.

  3. Fare clic su per confermare che la prima riga contiene intestazioni di colonna.

  4. Ripetere i passaggi da 1 a 3 per ognuno dei fogli di lavoro rimanenti.

Trovare la data più o meno recente

I passaggi di questa sezione usano i dati di esempio per illustrare il processo di creazione di una query dei primi valori.

Creare una query dei primi valori di base

  1. Nel gruppo Query della scheda Crea fare clic su Struttura query.

  2. Fare doppio clic sulla tabella Dipendenti e quindi su Chiudi.

    Se si usano i dati di esempio, aggiungere la tabella Dipendenti alla query.

  3. Aggiungere i campi da usare nella query alla griglia di struttura. È possibile fare doppio clic su ogni campo oppure trascinare e rilasciare ogni campo in una cella vuota nella riga Campo.

    Se si usa la tabella di esempio, aggiungere i campi Nome, Cognome e Data di nascita.

  4. Nel campo che contiene i valori superiori o inferiori, ovvero il campo Data di nascita se si usa la tabella di esempio, fare clic sulla riga Ordina e selezionare Crescente o Decrescente.

    L'ordinamento decrescente restituisce la data più recente, mentre l'ordinamento crescente restituisce la data meno recente.

    Importante: È necessario impostare un valore nella riga Ordina solo per i campi che contengono le date. Se si specifica l'ordinamento per un altro campo, la query non restituisce i risultati desiderati.

  5. Nel gruppo Strumenti della scheda Struttura fare clic sulla freccia in giù accanto a Tutte (elenco Primi valori) e immettere il numero di record da visualizzare oppure selezionare un'opzione nell'elenco.

  6. Fare clic su Esegui Icona del pulsante per eseguire la query e aprire i risultati in visualizzazione Foglio dati.

  7. Salvare la query come NextBirthDays.

Come si può notare, questo tipo di query dei primi valori può rispondere a domande di base, ad esempio riguardo a quale sia la persona più vecchia o più giovane della società. I passaggi seguenti descrivono come usare espressioni e altri criteri per aggiungere efficacia e flessibilità alla query. I criteri indicati nel passaggio seguente restituiscono i prossimi tre compleanni dei dipendenti.

Aggiungere criteri alla query

Questi passaggi usano la query creata nella procedura precedente. È possibile seguire una query dei primi valori diversa purché contenga dati di data/ora effettivi, non valori di testo.

Suggerimento:  Per comprendere meglio il funzionamento della query, passare dalla visualizzazione Struttura alla visualizzazione Foglio dati e viceversa a ogni passaggio. Per visualizzare il codice di query effettivo, passare alla visualizzazione SQL. Per passare da una visualizzazione all'altra, fare clic con il pulsante destro del mouse sulla scheda nella parte superiore della query e quindi scegliere la visualizzazione desiderata.

  1. Nel riquadro di spostamento fare clic con il pulsante destro del mouse sulla query NextBirthDays e quindi scegliere Visualizzazione Struttura.

  2. Nella colonna a destra di BirthDate nella griglia di struttura della query immettere quanto segue:MonthBorn: DatePart("m",[DataDiNascita]).Questa espressione estrae il mese da BirthDate usando la funzione DatePart .

  3. Nella colonna successiva della griglia di struttura della query immettere quanto segue:DayOfMonthBorn: DatePart("d",[BirthDate])Questa espressione estrae il giorno del mese da BirthDate usando la funzione DatePart .

  4. Deselezionare le caselle di controllo nella riga Mostra per ognuna delle due espressioni appena immesse.

  5. Fare clic sulla riga Ordina per ogni espressione e quindi selezionare Crescente.

  6. Nella riga Criteri della colonna Data di nascita digitare l'espressione seguente:Month([Data di nascita]) > Month(Date()) OR Month([Data di nascita])= Month(Date()) AND Day([Data di nascita])>Day(Date())Questa espressione esegue le operazioni seguenti:

    • Month( [Data di nascita]) > Month(Date()) specifica che la data di nascita di ogni dipendente rientra in un mese futuro.

    • Il Mese([Data di nascita])= Month(Date()) And Day([Data di nascita])>Day(Date()) specifica che se la data di nascita si verifica nel mese corrente, il compleanno cade il giorno corrente o dopo tale data.

      In breve, questa espressione esclude tutti i record in cui si verifica il compleanno tra il 1° gennaio e la data corrente.

      Suggerimento:  Per altri esempi di espressioni dei criteri di query, vedere l'articolo Esempi di criteri di query.

  7. Nel gruppo Imposta query della scheda Struttura digitare 3 nella casella Invio.

  8. Nel gruppo Risultati della scheda Progettazione fare clic su Esegui Icona del pulsante.

Nota:  Nella query personalizzata usando i propri dati, a volte potrebbero essere visualizzati più record di quelli specificati. Se i dati contengono più record che condividono un valore compreso tra i primi valori, la query restituirà tutti questi record anche se ciò significa restituire più record di quanti ne desiderati.

Inizio pagina

Trovare le date più o meno recenti per gruppi di record

Usare una query di totalizzazione per trovare le date più recenti o meno recenti per i record che rientrano in gruppi, ad esempio gli eventi raggruppati per città. Una query di totalizzazione è una query di selezione che usa funzioni di aggregazione, ad esempio Raggruppa per, Min, Max, Conteggio, Primo e Ultimo, per calcolare i valori per ogni campo di output.

Includere il campo da usare per le categorie, in base al quale raggruppare, e il campo con i valori da riepilogare. Se si includono altri campi di output, ad esempio i nomi dei clienti durante il raggruppamento per tipo di evento, la query userà anche questi campi per creare gruppi, modificando i risultati in modo che non rispondano alla domanda originale. Per etichettare le righe usando altri campi, creare una query aggiuntiva che usa la query di totalizzazione come origine e aggiungere altri campi alla query.

Suggerimento:  La creazione di query in passaggi è una strategia molto efficace per rispondere a domande più avanzate. In caso di problemi nel funzionamento di una query complessa, valutare se è possibile suddividerla in una serie di query più semplici.

Creare una query di totalizzazione

Questa procedura usa la tabella di esempio Events e la tabella di esempio EventType per rispondere a questa domanda:

Quando è stato l'evento più recente di ogni tipo di evento, esclusi i concerti?

  1. Nel gruppo Query della scheda Crea fare clic su Struttura query.

  2. Fare doppio clic sulle tabelle Events e EventType. Ogni tabella viene visualizzata nella sezione superiore di Progettazione query.

  3. Fare doppio clic sul campo EventType della tabella EventType e sul campo EventDate dalla tabella Events per aggiungere i campi alla griglia di struttura della query.

  4. Nella riga Criteri del campo EventType della griglia di struttura della query immettere <>Concert.

    Suggerimento:  Per altri esempi di espressioni dei criteri, vedere l'articolo Esempi di criteri di query.

  5. Nel gruppo Mostra/Nascondi della scheda Progettazione fare clic su Totali.

  6. Nella griglia di struttura della query fare clic sulla riga Totale del campo Data Evento e quindi su Max.

  7. Fare clic su Visualizza nel gruppo Risultati della scheda Struttura e quindi fare clic su Visualizzazione SQL.

  8. Alla fine della clausola SELECT nella finestra SQL, subito dopo la parola chiave AS, sostituire MaxOfEventDate con MostRecent.

  9. Salvare la query come MostRecentEventByType.

Creare una seconda query per aggiungere altri dati

Questa procedura usa la query MostRecentEventByType della procedura precedente per rispondere a questa domanda:

Chi è stato il cliente all'evento più recente di ogni tipo di evento?

  1. Nel gruppo Query della scheda Crea fare clic su Struttura query.

  2. Nella scheda Query fare doppio clic sulla query MostRecentEventByType.

  3. Nella scheda Tabelle fare doppio clic sulla tabella Events e sulla tabella Customers.

  4. In Progettazione query fare doppio clic sui campi seguenti:

    1. Nella tabella Events fare doppio clic su EventType.

    2. Nella query MostRecentEventByType fare doppio clic su MostRecent.

    3. Nella tabella Clienti fare doppio clic su Società.

  5. Nella griglia di struttura della query selezionare Crescente nella riga Ordina della colonna EventType.

  6. Nel gruppo Risultati della scheda Struttura fare clic su Esegui.

Inizio pagina

Serve aiuto?

Vuoi altre opzioni?

Esplorare i vantaggi dell'abbonamento e i corsi di formazione, scoprire come proteggere il dispositivo e molto altro ancora.