Collegare tabelle e query

Collegare tabelle e query

Importante :  Il presente articolo è stato tradotto automaticamente, vedere la dichiarazione di non responsabilità. Per visualizzare la versione inglese dell'articolo, fare clic qui.

Quando si includono più origini dati in una query di Access, utilizzare join per limitare i record che si desidera visualizzare, in base a come le origini dati sono correlate tra loro. È inoltre utilizzare join per combinare i record da entrambe le origini dati, in modo che ogni coppia di record dalle origini diventa un record nei risultati della query.

In questo articolo descrive i vari tipi di join e viene illustrato come utilizzarli in una query. Per impostazione predefinita, verrà automaticamente creato un join se è già presente una relazione tra due origini dati utilizzati in una query. Inoltre è stato creato un join se sono presenti campi che corrispondono chiaramente tra loro. È possibile eliminare un join creato automaticamente. Questo articolo fornisce informazioni di base sulle relazioni delle tabelle, ad esempio come crearne uno.

Nota : È possibile partecipare query nello stesso modo unire le tabelle e anche possibile partecipare a entrambe.

In questo articolo

Panoramica

Visualizzare le righe in cui un valore comune è presente in entrambe le tabelle collegate

Visualizzare tutte le righe da una tabella e le righe corrispondente di altra tabella

Visualizzare tutte le righe di entrambe le tabelle e unirli in cui è presente un valore comune

Cross join

Partecipare a tabelle in base alla diversità di valori di campo

Eliminare un join

Panoramica

Un database è una raccolta di tabelle di dati che relazioni logiche tra loro. Utilizzare le relazioni per la connessione di tabelle dai campi che hanno in comune. Una tabella può far parte di un numero qualsiasi di relazioni, ma ogni relazione ha sempre esattamente due tabelle. In una query, una relazione è rappresentata da un join.

Quando si aggiungono tabelle a una query, Access creati join basati sulle relazioni definite tra le tabelle. È possibile creare manualmente join nelle query, anche se non rappresentano relazioni già definiti. Se si utilizza altre query (anziché o oltre alle tabelle) come origini dei dati per una query, è possibile creare join tra le query di origine, nonché tra tali query e le tabelle utilizzate come origini dei dati.

I join hanno lo stesso funzionamento dei criteri delle query in quanto definiscono regole che i dati devono soddisfare per essere inclusi nelle operazioni delle query. A differenza dei criteri, i join specificano inoltre che ogni coppia di righe che soddisfa le condizioni di join verranno combinate nel recordset per formare un'unica riga.

Sono disponibili quattro tipi di join di base, ovvero inner join, outer join, cross join e join diversi. In questo argomento vengono descritti i vari tipi di join che è possibile utilizzare, le differenze specifiche tra i singoli tipi, nonché come creare i join.

Torna all'inizio

Visualizzare le righe in cui un valore comune è presente in entrambe le tabelle collegate

Utilizzare un inner join per visualizzare solo le righe con valori corrispondenti nel campo di join. In Access gli inner join vengono creati automaticamente.

Gli inner join rappresentano il tipo più comune di join. Indicano a una query che le righe di una delle tabelle collegate corrispondono alle righe di un'altra tabella in base ai dati inclusi nei campi di join. Quando viene eseguita una query contenente un inner join, nelle operazioni della query verranno incluse solo le righe in cui esiste un valore comune in entrambe le tabelle collegate.

Come utilizzare un inner join

Nella maggior parte dei casi non è necessario eseguire alcuna operazione specifica per utilizzare un inner join. Se per le tabelle aggiunte a una query sono già disponibili delle relazioni, verrà creato automaticamente un inner join tra ogni coppia di tabelle correlate quando si aggiungono le tabelle. Se viene applicata l'integrità referenziale, viene inoltre visualizzato un "1" sulla linea di join per indicare la tabella che si trova sul lato "uno" di una relazione uno-a-molti e il simbolo di infinito () per indicare la tabella che si trova sul lato "molti".

Anche se non sono state create relazioni, vengono creati automaticamente inner join se si aggiungono due tabelle a una query, se ogni tabella include un campo con un tipo di dati uguale o compatibile e se uno dei campi di join è una chiave primaria. In questo caso i simboli "uno" e "molti" non vengono visualizzati in quanto non viene applicata l'integrità referenziale.

Se si aggiungono query alla query corrente e non sono state create relazioni tra query, non verranno creati automaticamente inner join tra tali query oppure tra query e tabelle. In genere, è consigliabile creare tali join manualmente. Per creare un inner join, trascinare un campo da un'origine dati su un campo di un'origine dati diversa. Verrà visualizzata una linea tra i due campi a indicare che è stato creato un join.

Sintassi SQL di un inner join

Gli inner join vengono specificati in SQL all'interno della clausola FROM, come illustrato di seguito:

FROM Tabella1 INNER JOIN Tabella2 su table1. Campo1 confrontare Tabella2. Campo2

L'operazione INNER JOIN è composta dalle parti seguenti:

Parte

Descrizione

tabella1, tabella2

Nomi delle tabelle di cui vengono combinati i record.

campo1, campo2

Nomi dei campi uniti in join. Se non includono dati numerici, i campi devono includere lo stesso tipo di dati e contenere lo stesso genere di dati. Non è tuttavia necessario che abbiano lo stesso nome.

Confronta

Operatore di confronto relazionale: "=," "<," ">," "<=," ">=," o "<>."

Per ulteriori informazioni sulla sintassi degli inner join, vedere operazione INNER JOIN.

Torna all'inizio

Visualizzare tutte le righe da una tabella e le righe corrispondente di altra tabella

Gli outer join indicano a una query che, anche se alcune righe su entrambi i lati del join corrispondono esattamente, la query deve includere tutte le righe di una tabella, nonché le righe dell'altra tabella che condividono un valore comune su entrambi i lati del join.

L'outer join può essere un outer join sinistro o un outer join destro. In un outer join sinistro la query include tutte le righe della prima tabella della clausola FROM dell'istruzione SQL e solo le righe dell'altra tabella in cui il campo di join include valori comuni a entrambe le tabelle. In un outer join destro la query include invece tutte le righe della seconda tabella della clausola FROM dell'istruzione SQL e solo le righe dell'altra tabella in cui il campo di join include valori comuni a entrambe le tabelle.

Nota : È possibile stabilire facilmente quale tabella è la tabella sinistra o destra in un dato join facendo doppio clic sul join e quindi verificando nella finestra di dialogo Proprietà join. È anche possibile passare alla visualizzazione SQL e quindi esaminare la clausola FROM.

Poiché alcune righe su un lato di un outer join non disporranno di righe corrispondenti nell'altra tabella, alcuni campi restituiti nei risultati della query da tale tabella saranno vuoti in caso di mancata corrispondenza delle righe.

Come utilizzare un outer join

Per creare outer join, è sufficiente modificare gli inner join esistenti. Se non esistono inner join, crearne uno e convertirlo in un outer join.

Convertire un inner join in outer join

  1. Nella visualizzazione Struttura della query fare doppio clic sul join che si desidera modificare.

    Verrà visualizzata la finestra di dialogo Proprietà join.

  2. Nella finestra di dialogo Proprietà join prestare attenzione alle scelte disponibili accanto alle opzioni 2 e 3.

  3. Fare clic sull'opzione che si desidera utilizzare e quindi fare clic su OK.

  4. Assieme al join verrà visualizzata una freccia che collega l'origine dati in cui sono incluse tutte le righe all'origine dati in cui verranno incluse solo le righe che soddisfano la condizione di join.

Outer join ambigui

Se si crea una query contenente un LEFT JOIN e un INNER JOIN, Access potrebbe non essere possibile determinare quale operazione da eseguire prima di partecipare. Poiché i risultati sono diversi a seconda se il join sinistro o inner join viene eseguito prima di tutto, verrà visualizzato un messaggio di errore:

Per correggere questo errore, è necessario modificare la query in modo che sia chiaramente indicato il join da eseguire per primo.

Sintassi SQL di un outer join

Gli outer join vengono specificati in SQL all'interno della clausola FROM, come illustrato di seguito:

DAL parametro table1 [sinistra | DESTRA] JOIN Tabella2
in table1.field1 confrontare table2.field2

Le operazioni LEFT JOIN e RIGHT JOIN includono le parti seguenti:

Parte

Descrizione

tabella1, tabella2

Nomi delle tabelle di cui vengono combinati i record.

campo1, campo2

I nomi dei campi che vengono collegati. I campi devono essere dello stesso tipo di dati e includere lo stesso genere di dati, tuttavia non è necessario che utilizzino lo stesso nome.

Confronta

Operatore di confronto relazionale: "=," "<," ">," "<=," ">=," o "<>."

Per ulteriori informazioni sulla sintassi degli outer join, vedere l'argomento LEFT JOIN, RIGHT JOIN Operations.

Torna all'inizio

Visualizzare tutte le righe di entrambe le tabelle e unirli in cui è presente un valore comune

Quando si desidera visualizzare tutte le righe da due tabelle e aggiungerli in base ai valori comuni, si utilizza un full outer join. Access non supporta in modo esplicito full outer join, ma è possibile ottenere lo stesso effetto utilizzando una query di unione. La procedura seguente viene illustrato come eseguire questa operazione, ma se si desiderano ulteriori informazioni sulle query di unione, vedere la sezione Vedere anche.

Per utilizzare una query di unione per eseguire un full outer join:

  1. Creare una query contenente un left outer join nel campo che si desidera utilizzare per un full outer join.

  2. Nel gruppo Visualizzazioni della scheda Home fare clic su Visualizza, quindi su Visualizzazione SQL.

  3. Premere CTRL+C per copiare il codice SQL.

  4. Eliminare il punto e virgola presente alla fine della clausola FROM, quindi premere INVIO.

  5. Digitare UNION, quindi premere INVIO.

    Nota : Quando si utilizza una query di unione per eseguire un full outer join, non utilizzare la parola chiave ALL.

  6. Premere CTRL+V per incollare il codice SQL copiato nel passaggio 3.

  7. Nel codice incollato cambiare LEFT JOIN in RIGHT JOIN.

  8. Eliminare il punto e virgola presente alla fine della seconda clausola FROM, quindi premere INVIO.

  9. Aggiungere una clausola WHERE per specificare che il valore del campo di join è NULL nella prima tabella elencata nella clausola FROM, ovvero la tabella a sinistra.

    Ad esempio se la clausola FROM è simile a quella riportata di seguito:

    FROM Products RIGHT JOIN [Order Details] 
    ON Products.ID = [Order Details].[Product ID]

    Aggiungere la seguente clausola WHERE:

    WHERE Products.ID IS NULL

  10. Digitare un punto e virgola (;) alla fine della clausola WHERE per indicare la fine della query di unione.

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

Cross join

Cross join sono diversi da inner join e outer join in non rappresentati in modo esplicito in Access. In un cross join ogni riga di una tabella viene combinato con ogni riga da un'altra tabella, risultante nella stessa un prodotto incrociato o un prodotto cartesiano. Qualsiasi momento che si esegue una query contenente le tabelle che non fanno parte in modo esplicito, il risultato è un prodotto incrociato. Cross join vengono in genere non intenzionale, ma esistono casi in cui può essere utile.

Perché utilizzare un cross join

Se si desidera esaminare ogni possibile combinazione di righe tra due tabelle o query, è consigliabile utilizzare un cross join. Si supponga, ad esempio, che a seguito di un anno caratterizzato da un volume di fatturato particolarmente elevato una società intenda offrire sconti interessanti ai propri clienti. È possibile creare una query che somma gli acquisti dei singoli clienti, crea una tabella contenente una serie di possibili percentuali di sconto e combina le due tabelle in un'altra query che esegue un cross join. Si otterrà in questo modo una query che visualizza una serie di ipotetici sconti per ogni cliente.

Come utilizzare un cross join

Un cross join viene creato automaticamente ogni volta che nella query vengono incluse tabelle o query e non viene creato almeno un join esplicito per ogni tabella o query. Ogni riga di ogni tabella o query non collegata tramite join in modo esplicito all'altra tabella o query viene automaticamente combinata a ogni riga nei risultati. Si consideri lo scenario di calcolo degli sconti descritto nel paragrafo precedente. Si supponga di disporre di un gruppo di 91 clienti e di analizzare cinque possibili percentuali di sconto. Il cross join specifico restituirà 455 righe, ovvero il prodotto di 91 e 5.

Ne consegue che i cross join non intenzionali restituiscono un numero elevato di righe nei risultati della query. Inoltre, tali risultati sono in genere poco significativi in quando la maggior parte delle righe combinate incluse nei risultati non è caratterizzata da un significato specifico, a meno che non si intenda combinare tutte le possibili righe. L'esecuzione delle query che utilizzano cross join non intenzionali richiede infine tempi elevati.

Cross join non intenzionale nella visualizzazione Struttura della query
Cross join non intenzionale nella visualizzazione Struttura della query.

1. I campi cerchiati devono essere collegati tra loro tramite join.

Prodotto incrociato non intenzionale
Il prodotto incrociato restituito dal cross join non intenzionale viene descritto nella figura precedente.

1. Si noti il numero elevato di record.

Risultato della query corretto
Risultati dopo la creazione del join corretto.

1. Si noti che il numero di record è sensibilmente minore.

Torna all'inizio

Partecipare a tabelle in base alla diversità di valori di campo

I join non necessariamente devono essere basati sull'equivalenza dei campi collegati tramite join. Un join può infatti essere basato su qualsiasi operatore di confronto, ad esempio maggiore di (>), minore di (<) o diverso da (<>). I join non basati sull'equivalenza vengono definiti join diversi.

Se si desidera combinare le righe di due origini dati in base ai valori di campo diversi, utilizzare un join diverso. In genere, questo tipo di join si basa sull'operatore di confronto maggiore di (>), minore di (<), maggiore o uguale a (>=) oppure minore o uguale a (<=). I join diversi basati sull'operatore diverso da (<>) possono restituire approssimativamente lo stesso numero di righe di un cross join e i risultati sono altrettanto difficili da interpretare.

Come utilizzare un inner diverso

I join diversi non sono supportati nella visualizzazione Struttura. Se si desidera utilizzarli, è necessario utilizzare la visualizzazione SQL. Tuttavia, è possibile creare un join nella visualizzazione Struttura, passare alla visualizzazione SQL, individuare l'operatore di confronto uguale a (=) e sostituirlo con l'operatore che si desidera utilizzare. A questo punto, è possibile aprire nuovamente la query nella visualizzazione Struttura solo se l'operatore di confronto uguale a (=) viene ripristinato nella visualizzazione SQL.

Eliminare un join

Se in Access viene automaticamente creato un join indesiderato oppure si crea un join per errore, ad esempio un join tra due campi con tipi di dati diversi, è possibile eliminarlo.

  1. Nella visualizzazione Struttura della query fare clic sul join che si desidera rimuovere.

  2. Premere CANC.

-oppure-

  • Nella griglia di struttura della query fare clic con il pulsante destro del mouse sul join che si desidera rimuovere e quindi scegliere Elimina.

Torna all'inizio

Nota : Dichiarazione di non responsabilità per la traduzione automatica: Il presente articolo è stato tradotto tramite un software di traduzione automatica e non da una persona. Microsoft offre le traduzioni automatiche per consentire a coloro che non conoscono la lingua inglese di leggere gli articoli sui prodotti, sui servizi e sulle tecnologie Microsoft. Dal momento che l'articolo è stato tradotto automaticamente, potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli.

Vedere anche

Aggiungere record a una tabella utilizzando una query di Accodamento

Combinare i risultati di più query di selezione utilizzando una query di unione

Creare una query in base a più tabelle

Creare, modificare o eliminare una relazione

Amplia le tue competenze
Esplora i corsi di formazione
Ottieni in anticipo le nuove caratteristiche
Partecipa al programma Office Insider

Queste informazioni sono risultate utili?

Grazie per i tuoi commenti e suggerimenti

Grazie per il tuo feedback! Potrebbe essere utile metterti in contatto con uno dei nostri operatori del supporto di Office.

×