Gestire i dati con le query

Creare query con outer join

Il browser in uso non supporta le funzionalità video. Installare Microsoft Silverlight, Adobe Flash Player o Internet Explorer 9.

A volte nelle tue query potresti voler visualizzare tutti i record di una tabella, insieme ai record corrispondenti di un'altra tabella. A questo scopo, puoi creare un outer join.

Gli inner join visualizzano i dati solo quando esiste un ID corrispondente in entrambe le origini dati connesse. Ad esempio, se vuoi visualizzare le quantità e i prodotti venduti, puoi creare un inner join tra le tabelle Prodotti e Dettagli ordine. Quando esegui la query, vengono restituiti solo i prodotti inclusi in ordini, visualizzati quindi in entrambe le tabelle.

Al contrario, gli outer join restituiscono tutti i dati di un'origine dati e alcuni dei dati di un'altra tabella o origine dati.

Se, ad esempio, vuoi visualizzare i prodotti che non sono stati venduti, puoi creare una query che mostri l'ID prodotto dalla tabella Prodotti e tutti gli ID ordine corrispondenti dalla tabella Dettagli ordine. I prodotti per cui non esistono record corrispondenti nella tabella Dettagli ordine restituiscono il nome del prodotto senza valore per il campo ID ordine.

Left outer join e right outer join

In un outer join la tabella che visualizza tutti i record è chiamata tabella di base. La tabella che visualizza solo alcuni record (quelli corrispondenti) si chiama tabella secondaria.

La finestra di dialogo Proprietà join descrive gli elementi visualizzati con i diversi tipi di join:

Screenshot di tre tabelle e della rispettiva finestra di dialogo Proprietà join

Supponi di aver creato una query per visualizzare i prodotti acquistati dai tuoi clienti. I campi di output sono Nome prodotto, ID ordine e Quantità.

  1. Inner join. Include solo le righe (record) in cui i campi collegati da entrambe le tabelle sono uguali, ad esempio solo i prodotti a cui sono associati ordini.

  2. Left outer join. Include tutti i record della tabella in Nome tabella sinistra e solo i record della tabella in Nome tabella destra in cui i campi collegati sono uguali, ad esempio tutti gli ordini, ma solo le quantità e gli ID prodotto per gli ordini a cui sono associati prodotti.

  3. Right outer join Include tutti i record della tabella in Nome tabella destra e solo i record della tabella in Nome tabella sinistra in cui i campi collegati sono uguali, ad esempio tutti i prodotti, anche quando non esistono ordini, caso in cui vengono visualizzati valori vuoti nei campi ID ordine e Quantità.

Come puoi vedere in questi esempi, è importante identificare quale tabella si trova a sinistra e quale a destra e queste posizioni possono essere diverse dalla disposizione delle tabelle nell'intervallo di query. Per determinare quali dati otterrai dalla query, leggi attentamente il testo nella finestra di dialogo Proprietà join.

1. Aggiungere origini dati

  • Seleziona Crea > Struttura query.

Aggiungi tutte le tabelle e le query necessarie come origini dati. Non preoccuparti, se ne dimentichi una potrai aggiungere altre origini dati più avanti.

Se riesce a rilevarle o dedurle, Access può mostrare le relazioni per le origini dati.

2. Aggiungere un join

  • Se non noti alcuna relazione tra le origini, aggiungi un join. Trascina il campo desiderato in un'origine dati al campo corrispondente in un'altra origine dati. La tabella da cui esegui il trascinamento è quella che verrà visualizzata a sinistra nella finestra di dialogo Proprietà join. Per impostazione predefinita, Access crea un inner join. Se preferisci un outer join, modificane il tipo.

    Screenshot di un join tra due tabelle

3. Modificare un join

  1. Fai doppio clic sulla linea che rappresenta il join che vuoi modificare.

  2. Per creare un outer join, nella finestra di dialogo Proprietà join seleziona la seconda opzione o la terza. Quindi, seleziona OK.

    Ricorda di identificare con precisione quale tabella è la tabella di base, ovvero quella da cui vengono visualizzati tutti i record.

    Screenshot della finestra di dialogo Proprietà join con Nome tabella sinistra evidenziato

4. Completare la query

Segui i normali passaggi per creare una query: aggiungi campi di output, aggiungi eventuali criteri ed esegui o salva la query. Per scoprire come, vedi Creare query di base.

Altre informazioni

Creare query di base

Formazione su Excel

Formazione su Outlook

Vediamo come usare i left outer join e i right outer join in una query di selezione.

Gli outer join hanno lati, sinistro e destro, e restituiscono TUTTI i dati da una tabella, ma solo i dati CORRISPONDENTI dall'altra. Questi join sono utili quando vuoi determinare qualcosa che NON è avvenuto, ad esempio quando un determinato articolo NON viene venduto o gli studenti NON iscritti a una lezione.

Aggiungiamo ora qualche informazione a questi concetti di base.

La tabella che restituisce TUTTI i dati è chiamata "tabella di base", mentre quella che restituisce le CORRISPONDENZE è chiamata "tabella secondaria".

Quale tabella sia quella di base e quale la secondaria dipende dalla direzione del join.

Se usi un right outer join, la tabella a destra è quella di base. Se usi un left outer join, la tabella a sinistra è quella di base.

Puoi controllare se stai usando un left outer join o un right outer join nella finestra Proprietà join. Seleziona e quindi fai clic con il pulsante destro del mouse o un doppio tocco sulla linea di join…scegli Proprietà join e seleziona la seconda o la terza opzione.

Mettiamo ora in pratica tutte queste informazioni:

Nella scheda Crea scegli Struttura query. Qui aggiungiamo le tabelle Dettagli ordine e Prodotti.

Come puoi notare, Access ha usato una relazione uno-a-molti come MODELLO per il join e questo significa che si tratta di un inner join.

Aggiungiamo i campi Nome prodotto e Quantità e se eseguiamo la query, questa restituisce solo i dati per i prodotti che sono stati ordinati.

Lo sappiamo, perché se avesse restituito dati per i prodotti non ordinati, qui noteremmo record vuoti.

Di nuovo in visualizzazione Struttura, clic con il pulsante destro del mouse o doppio tocco sulla linea di join e clic su Proprietà join. Selezioniamo la seconda opzione e osserviamo la linea di join.

La freccia ci dice che si tratta di un outer join e punta alla tabella secondaria. Eseguiamo la query, ordiniamo i dati dal più piccolo al più grande e ora possiamo osservare i prodotti invenduti.

Che cosa succede se passiamo a un right outer join?

Apportiamo la modifica…eseguiamo la query…e otteniamo gli stessi risultati di un inner join: nessun record vuoto.

Se osserviamo la finestra di dialogo Proprietà join, scopriremo perché.

Sono stati restituiti tutti i dati dalla tabella Dettagli ordine, ma solo le CORRISPONDENZE dalla tabella Prodotti. In altre parole, sono visualizzati solo i prodotti per cui è presente un ordine corrispondente e questo è lo stesso risultato restituito da un inner join.

Hai scoperto come usare gli outer join in una query di selezione con più origini dati. Ricorda, puoi provare a usare un join e quindi cambiarlo se non ottieni i risultati desiderati.

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.

×