Collegare tabelle e query

Collegare tabelle e query

Nota: Riteniamo importante fornire il contenuto della Guida più recente non appena possibile, nella lingua dell'utente. Questa pagina è stata tradotta automaticamente e potrebbe contenere errori di grammatica o imprecisioni. L'intento è quello di rendere fruibile il contenuto. Nella parte inferiore della pagina è possibile indicare se le informazioni sono risultate utili. Questo è l'articolo in lingua inglese per riferimento.

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 vengono illustrati i diversi tipi di join e viene descritto 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

Tipi di join

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.

Join analogo a quello di criteri di query in quanto definiscono le regole che i dati devono corrispondere per essere inclusi durante le operazioni di query. A differenza dei criteri, join inoltre specificare che ogni coppia di righe che soddisfano le condizioni di join verrà combinata nel recordset per formare una singola riga.

Esistono quattro tipi di join: inner join, outer join, cross join e i join. In questo articolo vengono illustrati vari tipi di join che è possibile utilizzare, il motivo per cui si usa ogni tipo e su come creare i join.

I join rappresentano per le query quello che le relazioni rappresentano per le tabelle, ovvero un'indicazione del modo in cui è possibile combinare i dati di due origini in base ai valori di dati in comune. La seguente è un'illustrazione di un join nella visualizzazione Struttura di una query, con le proprietà del join aperte in una finestra di dialogo:

Finestra Proprietà join.

Questa linea tra le tabelle rappresenta il join. Fare doppio clic su un join per aprire la nella finestra di dialogo Proprietà Join (illustrato) e revisione o modifica il join.

I join sono talvolta direzionali. In quest'area della finestra di dialogo è indicata la funzione delle tabelle nel join e i campi utilizzati per collegare le tabelle tramite join.

In quest'area viene indicato il tipo di join: l'opzione 1 corrisponde a un inner join, la 2 a un outer join sinistro e la 3 a un outer join destro.

È possibile utilizzare campi di entrambe le tabelle e vengono visualizzati i dati di entrambe le tabelle pertinenti per un'attività specifica. In un inner join non sono inclusi altri dati. In un outer join nei risultati della query sono inclusi anche i record no correlati di una tabella.

Torna all'inizio

Tipi di join

Sono disponibili quattro tipi di join di base, ovvero inner join, outer join, cross join e join diversi. I cross join e i join diversi sono tipi di join avanzati e vengono utilizzati raramente, ma è opportuno conoscerli per disporre di un quadro completo sul funzionamento dei join.

Inner join: combinazione dei soli dati correlati di entrambe le tabelle

Per inner join si intende un join in cui i dati di una tabella vengono inclusi solo se sono presenti dati corrispondenti nella tabella correlata e viceversa. Nella maggior parte dei casi si utilizzano inner join. Quando si crea un join senza specificarne il tipo, in Access si presuppone che si tratti di un inner join. Gli inner join sono utili perché consentono di combinare i dati di due origini sulla base di valori condivisi, pertanto i dati vengono visualizzati solo quando il quadro è completo.

Outer join: combinazione di tutti i dati correlati e visualizzazione di tutti i record residui di una tabella

Un outer join è simile a un inner join, ma prevede l'aggiunta delle righe residue di una delle tabelle. Gli outer join sono direzionali. Un outer join sinistro include tutti i record della tabella sinistra, ovvero la prima tabella del join, mentre un outer join destro include tutti i record della tabella destra, ovvero la seconda tabella del join.

Outer join completi: tutti i dati, combinati laddove possibile

In alcuni sistemi un outer join può includere tutte le righe di entrambe le tabelle e righe combinate se corrispondenti. Tale tipo di join, denominato outer join completo, non è supportato in modo esplicito in Access. È tuttavia possibile utilizzare un cross join e i criteri per ottenere lo stesso effetto.

Cross join: tutti i dati, combinati in tutti i modi possibili

Nella maggior parte dei casi un cross join è un effetto collaterale dell'aggiunta di due tabelle a una query che si è dimenticato di collegare tramite join. Access interpreta questo comportamento come se si fosse scelto di visualizzare tutti i record di una tabella combinati con tutti i record dell'altra tabella, ovvero tutte le possibili combinazioni di record. Poiché non è possibile combinare alcun dato, questo tipo di join consente di ottenere risultati utili solo raramente. Vi sono però alcuni casi in cui un cross join costituisce la soluzione ottimale.

Join diversi: simili a un join normale, utilizzano un confronto diverso per combinare le righe

Nei join diversi viene utilizzato un operatore diverso dal segno di uguale (=) per confrontare i valori e determinare se e come combinare i dati. I join diversi non sono supportati in modo esplicito, ma è possibile utilizzare un cross join e i criteri per ottenere lo stesso effetto.

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 che le righe da uno dei collegate a una query di tabelle corrispondono alle righe in altra tabella, in base ai dati nei campi collegati. Quando si esegue una query con un inner join, solo le righe in cui un valore comune è presente in entrambe le tabelle collegate tramite join includerà le operazioni di query.

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 sono state create relazioni, vengono creati automaticamente inner join se si aggiungono due tabelle a una query e ogni tabella dispone di un campo con lo stesso tipo di dati compatibili e di uno dei campi di join è un chiave primaria. I simboli "uno" e "molti" non vengono visualizzati in questo caso, poiché non viene applicata l'integrità referenziale.

Se si aggiungono query alla query e non è stato creato le relazioni tra le query, Access crea automaticamente gli inner join tra le query o tra le tabelle e query. In genere, è consigliabile creare tali se stessi. Per creare un inner join trascinando un campo da un'origine dati a un campo in un'altra origine dati. Access visualizza una linea tra i due campi per 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 che vengono collegati tramite join. Se non includono dati numerici, i campi devono essere dello stesso tipo di dati e contenere lo stesso genere di dati, tuttavia non è necessario che abbiano lo stesso nome.

compare

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 una query che anche se alcune delle righe su entrambi i lati del join corrispondono esattamente, la query deve includere tutte le righe da una tabella e le righe di 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 a sinistra o destra in un dato join facendo doppio clic sul join e quindi la ricerca nella finestra di dialogo Proprietà Join. È possibile anche 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 da usare e quindi 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 tramite join. I campi devono essere dello stesso tipo di dati e includere lo stesso genere di dati, tuttavia non è necessario che utilizzino lo stesso nome.

compare

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

Per ulteriori informazioni sulla sintassi degli outer join, vedere Operazioni LEFT JOIN, RIGHT JOIN.

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 alla fine della clausola FROM e 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 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 tutte le possibili combinazioni di righe tra due tabelle o query, utilizzare un cross join. Si supponga ad esempio, l'azienda ha avuto un anno caratterizzato e si intenda offrire sconti ai clienti. È possibile creare una query che somma acquisti ogni cliente, creare una piccola tabella che contiene numerosi possibili percentuali di sconto e combinarle in un'altra query che esegue un cross join. Verrà visualizzata con una query che visualizza una serie di sconti ipotetici per ogni cliente.

Come utilizzare un cross join

Un cross join viene generato ogni volta che includono tabelle o query nella query e non creare almeno un join esplicito per ogni tabella o query. Accesso combina tutte le righe di ogni tabella o query che non è stato aggiunto in modo esplicito per qualsiasi altra tabella o query a tutte le altre righe nei risultati. Considerare lo scenario sconto nel paragrafo precedente. Si supponga che si dispone di 91 clienti e che si desidera esaminare cinque possibili percentuali di sconto. Il cross join produce 455 righe (il prodotto di 91 e 5).

Come si può immaginare, è possibile cross join non intenzionale un numero elevato di righe nei risultati della query. Inoltre, questi risultati sono in genere produce alcun effetto, poiché se in realtà non si prevede di combinare tutte le righe con tutte le altre righe, la maggior parte delle righe combinate incluse nei risultati di non essere utile. Infine, le query che utilizzano cross join non intenzionale possono richiedere molto tempo per l'esecuzione.

Cross join non intenzionale nella visualizzazione Struttura della query
Un cross join non intenzionale nella visualizzazione struttura della query.

1. i campi in un cerchio devono essere eseguito il join tra loro.

Prodotto incrociato non intenzionale
Prodotto incrociato restituito dal cross join non intenzionale illustrato sopra.

1. nota il numero di dimensioni molto grande di record.

Risultato della query corretto
I risultati dopo la creazione di join corretto.

1. si noti che il numero di record è molto più piccolo.

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 non sono supportati in visualizzazione struttura. Se si desidera utilizzarli, è necessario ripetere questa operazione utilizzando la visualizzazione SQL. Tuttavia, è possibile creare un join in visualizzazione struttura, passare alla visualizzazione SQL, individuare l'uguale operatore di confronto (=) e modifica con l'operatore da usare. Al termine dell'operazione, è possibile aprire solo la query in visualizzazione struttura nuovamente se si prima modifica all'operatore di confronto è uguale a (=) in 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

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 su Office
Esplora i corsi di formazione
Ottieni in anticipo le nuove caratteristiche
Partecipa al programma Office Insider

Queste informazioni sono risultate utili?

Grazie per il feedback!

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

×