Modificare le istruzioni SQL per affinare i risultati delle query
Applies ToAccess per Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Se le query non funzionano a sufficienza, l'aggiunta di alcune istruzioni di SQL di base può aiutare a focalizzare i risultati. Esaminiamo alcuni tipi di istruzioni SQL e le clausole o parti che è possibile modificare per ottenere i risultati desiderati.

Nota:  Questo articolo non è applicabile alle app Web di Access, il nuovo tipo di database che può essere progettato con Access e pubblicato online.

In questo articolo

Creare un'istruzione Select

Un'istruzione SQL select ha da due a tre clausole. La clausola SELECT indica al database dove cercare i dati e chiede di restituire un risultato specifico.

Nota:  Le istruzioni SELECT terminano sempre con un punto e virgola (;) alla fine dell'ultima clausola o in una riga da sola alla fine dell'istruzione SQL.

L'istruzione di selezione seguente chiede ad Access di ottenere informazioni dalle colonne Indirizzo di posta elettronica e Società, dalla tabella Contatti, in particolare quando trova "Seattle" nella colonna Città.

Scheda di oggetto SQL con istruzione SELECT

La query precedente include tre clausole SELECT, FROM e WHERE.

1. La clausola SELECT elenca le colonne che contengono i dati da usare e ha un operatore (SELECT) seguito da due identificatori (E-mail Address e Company). Se un identificatore include spazi o caratteri speciali, ad esempio "Indirizzo di posta elettronica", racchiudere l'identificatore tra parentesi quadre.

2. La clausola FROM identifica la tabella di origine. In questo esempio ha un operatore (FROM) seguito da un identificatore (Contacts).

3. La clausola WHERE è una clausola facoltativa. L'esempio include un operatore (WHERE) seguito da un'espressione (City="Seattle").

Per altre informazioni sulle query di selezione, vedere Creare una query di selezione semplice.

Ecco un elenco di clausole SQL comuni:

Clausola SQL

Funzione

Obbligatorio ?

SELECT

Elenca i campi che contengono i dati di interesse.

FROM

Elenca le tabelle che contengono i campi elencati nella clausola SELECT.

WHERE

Specifica i criteri di campo che ogni record deve soddisfare perché sia incluso nei risultati.

No

ORDER BY

Specifica il tipo di ordinamento dei risultati.

No

GROUP BY

In un'istruzione SQL contenente funzioni di aggregazione, elenca i campi non riepilogati nella clausola SELECT.

Solo se sono presenti campi di questo tipo

HAVING

In un'istruzione SQL contenente funzioni di aggregazione, specifica le condizioni che si applicano ai campi riepilogati nell'istruzione SELECT.

No

Ogni clausola SQL è costituita da termini. Ecco un elenco di alcuni termini SQL comuni.

Termine SQL

Definizione

Esempio

identificatore

Nome usato per identificare un oggetto di database, ad esempio il nome della colonna.

[Indirizzo di posta elettronica] e Società

operatore

Parola chiave che rappresenta un'azione o modifica un'azione.

AS

costante

Valore che non viene modificato, ad esempio un numero o NULL.

42

espressione

Combinazione di identificatori, operatori, costanti e funzioni che restituisce un unico valore.

>= Prodotti.[Prezzo unitario]

Inizio pagina

Personalizzazione della clausola SELECT

Personalizza

Esempio

Per visualizzare solo i valori distinti.

Usare la parola chiave DISTINCT nella clausola SELECT.

Ad esempio, se i clienti provengono da diverse filiali diverse e alcuni hanno lo stesso numero di telefono e si vuole visualizzare un solo numero di telefono elencato una sola volta, la clausola SELECT sarà simile alla seguente:

SELECT DISTINCT [txtCustomerPhone] 

Per modificare il modo in cui un identificatore viene visualizzato nella visualizzazione Foglio dati per migliorare la leggibilità.

Usare l'operatore AS (una parola chiave che rappresenta un'azione o modifica un'azione) con un alias di campo nella clausola SELECT. Un alias di campo è un nome assegnato a un campo per facilitare la lettura dei risultati.

SELECT [txtCustPhone] AS [Customer Phone]

Personalizzazione della clausola FROM

Personalizzare

Esempio

È possibile usare un alias di tabella o un nome diverso assegnato a una tabella in un'istruzione select. Un alias di tabella è utile se il nome del nome della tabella è lungo, soprattutto se sono presenti più campi con lo stesso nome di tabelle diverse.

Per selezionare i dati da due campi, entrambi id denominati, uno dei quali proviene dalla tabella tblCustomer e l'altro dalla tabella tblOrder:

SELECT [tblCustomer].[ID],        [tblOrder].[ID]

Usare l'operatore AS per definire gli alias di tabella nella clausola FROM:

FROM [tblCustomer] AS [C],      [tblOrder] AS [O] 

È quindi possibile usare questi alias di tabella nella clausola SELECT, come indicato di seguito:

SELECT [C].[ID],        [O].[ID]

Usare i join per combinare coppie di record da due origini dati in un singolo risultato o per specificare se includere i record di una delle due tabelle se nella tabella correlata non è presente alcun record corrispondente.

Creare un join tra le tabelle in modo che la query combina gli elementi delle tabelle ed escluda gli elementi quando nell'altra tabella non è presente alcun record corrispondente

Ecco l'aspetto della clausola FROM:

FROM [tblCustomer] INNER JOIN [tblOrder]ON [tblCustomer].[CustomerID]=[tblOrder].[CustomerID] 

Informazioni sull'uso dei join

Esistono due tipi di join, inner join e outer join. Gli inner join sono più comuni nelle query. Quando si esegue una query con un inner join, il risultato mostra solo gli elementi in cui esiste un valore comune in entrambe le tabelle unite.

Gli outer join specificano se includere i dati in cui non esiste alcun valore comune. Gli outer join sono direzionali, ovvero è possibile specificare se includere tutti i record della prima tabella specificata nel join (detto left join) o tutti i record della seconda tabella nel join (detto right join). Per un outer join è disponibile la sintassi SQL seguente:

FROM table1 [ LEFT | RIGHT ] JOIN table2ON table1.field1 = table2.field2

Per altre informazioni sull'uso dei join in una query, vedere Creare join in tabelle e query.

Inizio pagina

Personalizzazione della clausola WHERE

La clausola WHERE include criteri che consentono di limitare il numero di elementi restituiti in una query. Vedere esempi di criteri di query e come funzionano.

Un esempio di come personalizzare la clausola WHERE di base consiste nel limitare i risultati di una query. Si supponga di voler individuare il numero di telefono di un cliente e di ricordare solo il cognome come Bagel. In questo esempio i cognomi vengono archiviati in un campo Cognome, quindi la sintassi SQL sarà:

WHERE [LastName]='Bagel'

Usare la clausola WHERE anche per combinare origini dati per colonne con dati corrispondenti ma tipi di dati diversi. Questo è utile perché non è possibile creare un join tra campi con tipi di dati diversi. Usare un campo come criterio per l'altro campo, con la parola chiave LIKE . Ad esempio, se si vogliono usare i dati di una tabella Beni e di una tabella Dipendenti, solo quando il tipo di bene nel campo tipo di bene della tabella Beni ha il numero 3 nel campo Quantità della tabella Dipendenti, ecco come apparirebbe la clausola WHERE:

WHERE field1 LIKE field2

Importante:  Non è possibile specificare criteri per un campo usato con una funzione di aggregazione in una clausola WHERE. Per specificare i criteri per i campi di aggregazione viene usata, invece, una clausola HAVING.

Inizio pagina

Personalizzazione con l'operatore UNION

Usare l'operatore UNION per visualizzare una visualizzazione combinata dei risultati di diverse query di selezione simili. Ad esempio, se il database include una tabella Prodotti e una tabella Servizi ed entrambi hanno tre campi: offerta o prodotto o servizio esclusivo, prezzo, garanzia o garanzia. Anche se la tabella Prodotti archivia le informazioni sulla garanzia e la tabella Servizi archivia le informazioni di garanzia, le informazioni di base sono le stesse. È possibile usare una query di unione per combinare i tre campi delle due tabelle in questo modo:

SELECT name, price, warranty, exclusive_offerFROM ProductsUNION ALLSELECT name, price, guarantee, exclusive_offer FROM Services;

Quando si esegue la query, i dati di ogni set di campi corrispondenti vengono combinati in un unico campo di output. Per includere eventuali righe duplicate nei risultati, usare l'operatore ALL.

Nota:  L'istruzione Select deve avere lo stesso numero di campi di output, nello stesso ordine e con tipi di dati uguali o compatibili. Ai fini di una query di unione, i tipi di dati Numero e Testo sono compatibili.

Per altre informazioni sulle query di unione, vedere Uso di una query di unione per visualizzare un risultato unificato da più query.

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.

Le community aiutano a porre e a rispondere alle domande, a fornire feedback e ad ascoltare gli esperti con approfondite conoscenze.