SQLShack (Italiano)

In questo articolo impareremo l’SQL il concetto di join multipli e rafforzare i nostri apprendimenti con esempi piuttosto semplici, che vengono spiegati con illustrazioni. Nei database relazionali, i dati vengono archiviati in tabelle. Senza dubbio, e la maggior parte delle volte, abbiamo bisogno di un set di risultati formato dalla combinazione di dati di diverse tabelle. I join ci consentono di combinare i dati di due o più tabelle in modo da poter unire i dati delle tabelle in modo da poter recuperare facilmente i dati da più tabelle. Potresti chiederti quanti diversi tipi di join esistono in SQL Server. La risposta è che in SQL Server esistono quattro tipi principali di join. Prima di tutto, li descriveremo brevemente utilizzando le illustrazioni del diagramma di Venn:

  • Inner join restituisce le righe che corrispondono in entrambe le tabelle

  • Il join sinistro restituisce tutte le righe della tabella di sinistra

  • Il join destro restituisce tutte le righe della tabella di destra

  • Il join completo restituisce righe intere da entrambe le tabelle

Se non hai conoscenza sul concetto di join SQL in SQL Server, è possibile consultare la panoramica sui tipi di join SQL e l’articolo tutorial.

Dopo questa breve spiegazione sui tipi di join SQL, esamineremo i join multipli.

Cosa sono i join multipli SQL?

I join multipli possono essere descritti come segue; join multiplo è una query che contiene gli stessi tipi di join o diversi, che vengono utilizzati più di una volta. Pertanto, acquisiamo la capacità di combinare più tabelle di dati per superare i problemi del database relazionale.

Scenario di esempio

L’azienda Green-Tree ha lanciato una nuova campagna per il nuovo anno e fatto diverse offerte ai suoi clienti online. Come risultato della loro campagna, sono riusciti a convertire alcune offerte in vendite. Nei seguenti esempi, scopriremo i dettagli dei dati della campagna del nuovo anno dell’azienda Green-Tree.

L’azienda memorizza questi dettagli dei dati della campagna nelle tabelle seguenti. Ora creeremo queste tabelle tramite la seguente query e le popoleremo con alcuni dati fittizi:

Come funzionano i join multipli SQL?

Problema aziendale: quali clienti erano interessati a questo nuovo anno campagna?

Per rispondere a questa domanda, dobbiamo trovare le righe corrispondenti per tutte le tabelle perché alcuni clienti non hanno ricevuto un’offerta via email e alcune offerte non possono essere convertite in una vendita. Il seguente diagramma di Venn ci aiuterà a capire le righe corrispondenti di cui abbiamo bisogno. In breve, il risultato di questa query dovrebbe essere l’intersezione delle righe di tutte le tabelle nella query. L’area di colore grigio specifica queste righe nel diagramma di Venn:

L’approccio dei join multipli SQL ci aiuterà a unirci ai clienti online , ordini e tabelle di vendita. Come mostrato nel diagramma di Venn, abbiamo bisogno di abbinare le righe di tutte le tabelle. Per questo motivo, combineremo tutte le tabelle con una clausola di join interno. La seguente query restituirà un set di risultati desiderato da noi e risponderà alla domanda:

1
2
3
4
5
6
7
8

SELEZIONA customerName, customercity, customermail, salestotal
FROM onlinecustomers AS oc
INNER JOIN
ordina AS o
ON oc.customerid = o.customerid
INNER JOIN
sales AS s
ON o.orderId = s.orderId

All’inizio analizzeremo la query. Una clausola di inner join che si trova tra onlinecustomers e le tabelle degli ordini ha derivato le righe corrispondenti tra queste due tabelle. La seconda clausola di join interno che combina la tabella delle vendite ha derivato le righe corrispondenti dal set di risultati precedente. La seguente illustrazione di tabelle colorate ci aiuterà a comprendere la corrispondenza dei dati delle tabelle unite nella query. Le righe di colore giallo specificano i dati corrispondenti tra i clienti online e gli ordini. D’altra parte, nelle tabelle delle vendite esistono solo le righe colorate in blu, quindi il risultato della query sarà righe colorate in blu:

Il risultato della query sarà simile al seguente:

Utilizzo di diversi tipi di join in più join SQL

Problema aziendale: quali offerte non possono essere convertite in una vendita?

Possiamo utilizzare i diversi tipi di join in una singola query in modo da poter superare diversi problemi di database relazionali.In questo esempio, abbiamo bisogno di tutte le righe della tabella degli ordini, che sono abbinate alle tabelle dei clienti online. D’altra parte, queste righe non esistono nella tabella delle vendite. Il seguente diagramma di Venn ci aiuterà a capire le righe corrispondenti di cui abbiamo bisogno. L’area grigia indica le righe che saranno l’output della query:

Nel primo passaggio, dovremmo combinare le tabelle onlinecustomers e orders tramite la clausola inner join perché inner join restituisce tutte le righe corrispondenti tra onlinecustomers e le tabelle orders. Nel secondo passaggio, uniremo la tabella degli ordini alla tabella delle vendite attraverso il join sinistro e quindi filtreremo i valori nulli perché dobbiamo eliminare le righe memorizzate dalla tabella delle vendite:

1
2
3
4
5
6
7
8
9

SELEZIONA customerName, customercity, customermail, ordertotal, salestotal
FROM onlinecustomers AS c
INNER JOIN
orders AS o
ON c.customerid = o.customerid
SINISTRA PARTECIPA
vendite AS s
ON o.orderId = s.orderId
DOVE s.salesId È NULL

Il risultato della query sarà avere questo aspetto:

Quiz

D uestion: Genera la query corretta in base al diagramma di Venn di seguito.

Risposta: Come abbiamo appreso, il join completo consente us per restituire tutte le righe dalle tabelle combinate. La query con risposta sarà come la seguente:

1
2
3
4
5
6
7
8

SELEZIONA customerName, customercity, customermail, ordertotal, salestotal
FROM onlinecustomers AS c
FULL JOIN
ordini AS o
ON c.customerid = o.customerid
FULL JOIN
vendite AS s
ON o.orderId = s.orderId

Conclusione

In questo articolo, ci siamo concentrati sull’approccio dei join multipli SQL e lo abbiamo imparato con esempi dettagliati. I join multipli ci consentono di combinare più di due tabelle in modo da poter superare diversi problemi nel sistema di database relazionale. Inoltre, abbiamo visto come possiamo utilizzare diversi tipi di join in una singola query.

  • Autore
  • Post recenti
Esat Erkec è un Professionista di SQL Server che ha iniziato la sua carriera 8+ anni fa come sviluppatore di software. È un esperto di soluzioni certificate Microsoft per SQL Server.
Gran parte della sua carriera si è concentrata sull’amministrazione e lo sviluppo di database SQL Server. I suoi attuali interessi sono nell’amministrazione di database e Business Intelligence. Puoi trovarlo su LinkedIn.
Visualizza tutti i post di Esat Erkec

Ultimi post di Esat Erkec (vedi tutti)
  • Iniziare con la programmazione SQL – 3 febbraio 2021
  • Come leggere un’esecuzione piano con tutti i dettagli – 28 gennaio 2021
  • Panoramica ed esempi dell’istruzione SQL SELECT TOP – 25 gennaio 2021

Leave a Reply

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *