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, si usano i join per limitare i record che si desidera visualizzare, in base al modo in cui le origini dati sono correlate tra loro. Si usano anche i join per combinare i record da entrambe le origini dati, in modo che ogni coppia di record provenienti dalle origini diventi un record nei risultati della query.

In questo articolo vengono illustrati i vari tipi di join e viene illustrato come usarli in una query. Per impostazione predefinita, viene creato automaticamente un join se esiste già una relazione tra due origini dati usate in una query. Viene creato anche 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 tra tabelle e su come crearne una.

Nota: È possibile partecipare alle query nello stesso modo in cui si uniscono le tabelle e può anche partecipare entrambi.

In questo articolo

Panoramica

Tipi di join

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

Mostrare tutte le righe di una tabella e le righe corrispondenti dell'altra tabella

Mostrare tutte le righe di entrambe le tabelle e unirle in cui esiste un valore comune

Cross join

Aggiungere tabelle in base a una disuguaglianza di valori di campo

Eliminare un join

Panoramica

Un database è una raccolta di tabelle di dati che comportano relazioni logiche tra loro. Si usano le relazioni per connettere le tabelle in base ai campi 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 crea i join basati sulle relazioni definite tra le tabelle. È possibile creare manualmente join nelle query, anche se non rappresentano relazioni già definite. Se si usano altre query, anziché o oltre alle tabelle, come origini dei dati per una query, è possibile creare join tra le query di origine e anche tra tali query e le tabelle usate come origini di dati.

I join si comportano in modo analogo ai criteri di query in quanto stabiliscono regole che i dati devono corrispondere per essere inclusi nelle operazioni di query. A differenza dei criteri, i join specificano anche che ogni coppia di righe che soddisfano le condizioni di join verrà combinata nel recordset in modo da formare una singola riga.

Esistono quattro tipi di join di base: Inner join, outer join, cross join e join diversi. Questo articolo illustra ogni tipo di join che è possibile usare, perché si usa ogni tipo e come creare i join.

I join sono in grado di eseguire query sulle relazioni tra tabelle: indicazione del modo in cui i dati in due origini possono essere combinati in base ai valori dei dati in comune. Ecco un'illustrazione di un join nella visualizzazione struttura della 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 finestra di dialogo Proprietà join (raffigurata) e rivedere o modificare il join.

I join a volte sono direzionali. Questa area della finestra di dialogo Mostra la tabella in cui si trova il join e i campi utilizzati per unire le tabelle.

Questa area determina il tipo di join: l'opzione 1 è un inner join, 2 è un outer join sinistro e 3 è un outer join destro.

I campi di entrambe le tabelle possono essere usati e i dati relativi a una determinata attività vengono visualizzati da ognuno. In un inner join non sono inclusi altri dati. In un outer join i record non correlati da una tabella sono inclusi anche nei risultati della query.

Torna all'inizio

Tipi di join

Esistono quattro tipi di join di base: Inner join, outer join, cross join e join diversi. I join inCrociati e i join diversi sono i tipi di join avanzati e sono raramente utilizzati, ma è importante sapere come funzionano i join.

Inner join: solo i dati correlati di entrambe le tabelle sono combinati

Un inner join è quello in cui Access include solo i dati di una tabella se sono presenti dati corrispondenti nella tabella correlata e viceversa. La maggior parte delle volte userai inner join. Quando si crea un join e non si specifica il tipo di join, l'accesso presuppone che si voglia un inner join. I join interni sono utili perché consentono di combinare i dati da due origini in base ai valori condivisi, in modo da visualizzare solo i dati in presenza di un'immagine completa.

Outer join: tutti i dati correlati sono stati combinati correttamente, oltre a tutti i record rimanenti da una tabella

Un outer join è come un inner join, ma aggiunge le righe rimanenti da una delle tabelle. I join esterni sono direzionali: un outer join sinistro include tutti i record della tabella a sinistra, ossia la prima tabella del join, e un outer join destro che include tutti i record della tabella a destra, la seconda tabella del join.

Interi outer join: tutti i dati, combinati laddove possibile

In alcuni sistemi un outer join può includere tutte le righe di entrambe le tabelle, con le righe combinate quando corrispondono. Si tratta di un outer join completo e l'accesso non li supporta in modo esplicito. Tuttavia, puoi usare un cross join e i criteri per ottenere lo stesso effetto.

Cross join: tutti i dati, combinati in ogni modo possibile

Nella maggior parte dei casi, un cross join è un effetto collaterale dell'aggiunta di due tabelle a una query e quindi si dimentica di unirla. Access interpreta questa opzione per indicare che tutti i record di una tabella vengono combinati con tutti i record dell'altra tabella, ossia ogni possibile combinazione di record. Poiché non è possibile combinare dati, questo tipo di join raramente produce risultati utili. Ma ci sono alcuni casi in cui è necessario un cross join.

Join non uguali: come un normale join, ma usando un confronto diverso per combinare le righe

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

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

Se si vogliono mostrare solo le righe che hanno valori corrispondenti nel campo Unito, si usa un inner join. Access crea automaticamente i join interni.

Gli inner join rappresentano il tipo più comune di join. Indicano una query che le righe di una delle tabelle unite corrispondono alle righe nell'altra tabella, in base ai dati nei campi Uniti. Quando viene eseguita una query con un inner join, nelle operazioni di query vengono incluse solo le righe in cui è presente un valore comune in entrambe le tabelle unite.

Come si usa un inner join?

La maggior parte delle volte non è necessario eseguire alcuna operazione per usare un inner join. Se le tabelle aggiunte a una query hanno già relazioni, verrà creato automaticamente un inner join tra ogni coppia di tabelle correlate, quando si aggiungono le tabelle. Se viene applicata l'integrità referenziale, Access visualizza inoltre il numero "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 hai creato relazioni, Access crea automaticamente inner join se Aggiungi due tabelle a una query e quelle tabelle hanno un campo con lo stesso tipo di dati o compatibile e uno dei campi join è un chiave primaria. I simboli "uno" e "molti" non vengono visualizzati in questo caso, perché l'integrità referenziale non viene applicata.

Se si aggiungono query alla query e non si creano relazioni tra queste query, Access non crea automaticamente i join interni tra le query o tra le query e le tabelle. In genere, dovresti crearli tu stesso. Si crea un inner join trascinando un campo da un'origine dati a un campo di un'altra origine dati. Access visualizza una linea tra i due campi per indicare che è stato creato un join.

Sintassi SQL per un inner join

I join interni vengono specificati in SQL nella clausola FROM, come illustrato di seguito:

FROM tabella1 INNER JOIN tabella2 ON tabella1.campo1 confronta Table2.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 altre informazioni sulla sintassi inner join, vedere l'argomento operazione inner join.

Torna all'inizio

Mostrare tutte le righe di una tabella e le righe corrispondenti dell'altra tabella

Gli outer join indicano una query che, sebbene alcune delle righe su entrambi i lati del join corrispondano esattamente, la query deve includere tutte le righe di una tabella e anche le righe dell'altra tabella che condividono un valore comune su entrambi i lati del join.

I join esterni possono essere lasciati outer join o possono essere di destra outer join. In un outer join sinistro, la query include tutte le righe della prima tabella nella clausola FROM dell'istruzione SQL e solo le righe dell'altra tabella in cui il campo unione contiene valori comuni a entrambe le tabelle. In un outer join destro la query include tutte le righe della seconda tabella nella clausola FROM dell'istruzione SQL e solo le righe dell'altra tabella in cui il campo unione contiene valori comuni a entrambe le tabelle.

Nota: È possibile stabilire facilmente quale tabella è la tabella a sinistra o la tabella giusta in un determinato join facendo doppio clic sul join e quindi osservando la finestra di dialogo Proprietà join . È anche possibile passare alla visualizzazione SQL, quindi esaminare la clausola FROM.

Poiché alcune righe su un lato di un outer join non hanno righe corrispondenti dell'altra tabella, alcuni dei campi restituiti nei risultati della query da quell'altra tabella saranno vuoti quando le righe non corrispondono.

Come si usa un outer join?

Per creare un join esterno, modificare un inner join esistente. Se non esiste un join interno, è possibile crearne uno e quindi modificarlo in un outer join.

Modificare un inner join in un outer join

  1. Nella visualizzazione struttura della query fare doppio clic sul join che si vuole modificare.

    Verrà visualizzata la finestra di dialogo Proprietà join.

  2. Nella finestra di dialogo Proprietà join tenere presente le opzioni elencate accanto all'opzione 2 e all'opzione 3.

  3. Fare clic sull'opzione da usare e quindi su OK.

  4. In Access viene visualizzato il join e viene visualizzata una freccia che punta dall'origine dati in cui tutte le righe verranno incluse nell'origine dati in cui verranno incluse solo le righe che soddisfano la condizione di join.

Outer join ambigui

Se si crea una query che contiene un JOIN a sinistra e un INNER JOIN, potrebbe non essere possibile determinare l'operazione di join da eseguire per prima. Poiché i risultati sono diversi, a seconda che venga eseguito prima il join a sinistra o il join interno, viene visualizzato un messaggio di errore:

Per correggere questo errore, è necessario modificare la query in modo che sia chiaro quale join eseguire per primo.

Sintassi SQL per un outer join

Gli outer join vengono specificati in SQL nella clausola FROM, come illustrato di seguito:

DA Tabella1 [sinistra | A destra] Unisciti a Table2
in Tabella1. campo1 confronto Table2. campo2

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 altre informazioni sulla sintassi outer join, vedere l'argomento operazioni a sinistra join, right join.

Torna all'inizio

Mostrare tutte le righe di entrambe le tabelle e unirle in cui esiste un valore comune

Se si vogliono mostrare tutte le righe di due tabelle e unirle in base a valori comuni, è possibile usare un intero outer join. Access non supporta in modo esplicito i join esterni completi, ma è possibile ottenere lo stesso effetto usando una query di Unione. La procedura seguente illustra come eseguire questa operazione, ma se si desiderano altre informazioni sulle query di Unione, vedere la sezione vedere anche .

Per usare una query di Unione per eseguire un intero outer join:

  1. Creare una query con un outer join sinistro nel campo che si vuole usare per un intero 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: Non usare la parola chiave ALL quando si usa una query di Unione per eseguire un intero outer join.

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

  7. Nel codice incollato, modificare la partecipazione a sinistra in join a destra.

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

  9. Aggiungere una clausola WHERE che specifichi che il valore del campo join è NULL nella prima tabella elencata nella clausola FROM (la tabella a sinistra).

    Ad esempio, se la clausola FROM è:

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

    Aggiungere la clausola WHERE seguente:

    DOVE Products.ID è 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

I cross join sono diversi dai join interni ed esterni, in quanto non sono rappresentati in modo esplicito in Access. In un cross join ogni riga di una tabella viene combinata con ogni riga di un'altra tabella, causando un prodotto incrociato o un prodotto cartesiano. Ogni volta che si esegue una query con tabelle non esplicitamente collegate, viene restituito un prodotto incrociato. I cross join sono in genere non intenzionali, ma ci sono casi in cui possono essere utili.

Perché usare un cross join?

Se si vuole esaminare tutte le possibili combinazioni di righe tra due tabelle o query, usare un cross join. Ad esempio, supponiamo che la tua azienda abbia avuto un anno spettacolare e che stai valutando la concessione di sconti per i tuoi clienti. È possibile creare una query che somma gli acquisti di ogni cliente, creare una piccola tabella con diverse percentuali di sconto possibili e combinare i due in un'altra query che esegue un cross join. Si finisce con una query che visualizza un set di sconti ipotetici per ogni cliente.

Come si usa un cross join?

Un cross join viene generato ogni volta che si includono tabelle o query nella query e non si crea almeno un join esplicito per ogni tabella o query. Access combina ogni riga di ogni tabella o query che non viene aggiunta in modo esplicito a un'altra tabella o query ad ogni altra riga nei risultati. Si conSideri lo scenario di sconto del paragrafo precedente. Si supponga di avere clienti di 91 e di voler esaminare le cinque percentuali di sconto possibili. Il cross join produce righe di 455 (il prodotto di 91 e 5).

Come si può immaginare, i cross join involontari possono creare un numero enorme di righe nei risultati della query. Inoltre, questi risultati sono generalmente privi di significato, perché se non si intende combinare ogni riga con ogni altra riga, la maggior parte delle righe combinate che compaiono nei risultati non avrà senso. Infine, le query che usano cross join non intenzionali possono impiegare molto tempo.

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

1. i campi cerchiati devono essere Uniti tra loro.

Prodotto incrociato non intenzionale
Il prodotto incrociato restituito dal cross join involontario raffigurato sopra.

1. prendere nota del numero di record molto grande.

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

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

Torna all'inizio

Aggiungere tabelle in base a una disuguaglianza di valori di campo

I join non devono essere basati sull' equivalenza dei campi Uniti. Un join può essere basato su qualsiasi operatore di confronto, ad esempio maggiore di (>), minore di (<) o diverso da (<>). I join non basati sull'equivalenza sono detti join non uguali.

Se si vuole combinare le righe di due origini di dati in base a valori di campo che non sono uguali, si usa un join diverso. In genere, i join diversi si basano su un valore maggiore di (>), minore di (<), maggiore o uguale a (> =) o minore o uguale a (< =) operatori di confronto. I join diversi che si basano sull'operatore Not Equal (<>) possono restituire quasi altrettante righe come cross join e i risultati possono essere difficili da interpretare.

Come si usa un join diverso?

I join diversi non sono supportati in visualizzazione struttura. Se si desidera utilizzarle, è necessario farlo usando la visualizzazione SQL. Tuttavia, è possibile creare un join in visualizzazione struttura, passare alla visualizzazione SQL, trovare l'operatore di confronto uguale a (=) e modificarlo all'operatore che si vuole usare. Una volta eseguita questa operazione, è possibile aprire di nuovo la query in visualizzazione struttura se si modifica per la prima volta l'operatore di confronto su uguale a (=) in visualizzazione SQL.

Eliminare un join

Se Access crea automaticamente un join che non si vuole, o se si crea un join per errore, ad esempio un join tra due campi con tipi di dati diversi, è possibile eliminare il join.

  1. Nella griglia di 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 usando una query di Accodamento

Combinare i risultati di più query di selezione usando una query di Unione

Creare una query basata su 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.

×