Unisci tre tabelle in SQL

Unisci Tre Tabelle In Sql



Nei database relazionali, il compito di recuperare i dati da più tabelle è estremamente comune. A seconda del risultato desiderato, ciò comporta l'unione di più tabelle in una singola unità e il recupero dei dati risultanti.

Quando si tratta di join, la maggior parte di noi lavora principalmente con il limite di due tabelle e cose simili. Tuttavia, è frequente la necessità di unire tre tabelle per ottenere un layout e una visione dei dati più significativi. Prendi ad esempio il caso in cui desideri recuperare un elenco di film, il relativo inventario di noleggio corrispondente e i dettagli effettivi del noleggio. Ciascuna di queste unità, ad esempio film, inventario e dettagli sul noleggio, si trova in tabelle individuali.

In questo tutorial ti guideremo attraverso le varie unioni e tecniche che puoi utilizzare per unire tre tabelle in SQL.







Requisiti:

A scopo dimostrativo utilizzeremo MySQL versione 80 e il database di esempio Sakila. Per proseguire, puoi scaricare e configurare il database Sakila nel tuo server MySQL. Sentiti libero di utilizzare qualsiasi altro set di dati che ritieni applicabile.



Tipi di join in SQL

Prima di passare all'applicazione dei join, iniziamo discutendo i vari tipi di join disponibili nei database SQL.



UNIONE INTERNA

Il primo tipo di join è un INNER JOIN. Questo tipo di join restituisce solo le righe che contengono un valore corrispondente in entrambe le tabelle. È un tipo di unione molto comune ed è il più semplicistico quando si uniscono due tabelle.





La sintassi è la seguente:

SELEZIONA colonne

DALLA tabella1

INNER JOIN tabella2 SU tabella1.nome_colonna = tabella2.nome_colonna;

SINISTRA UNISCITI

Nel caso di LEFT JOIN, restituisce tutte le righe della tabella di sinistra e le righe corrispondenti della tabella di destra. Se non ci sono valori corrispondenti dalla tabella di destra, il join aggiunge al loro posto i valori NULL.



La sintassi è la seguente:

SELEZIONA colonne

DALLA tabella1

SINISTRA UNISCI tabella2 SU tabella1.nome_colonna = tabella2.nome_colonna;

ISCRIVITI GIUSTO

Come puoi immaginare, il RIGHT JOIN è l'opposto del LEFT JOIN. Questo tipo di join restituisce tutte le righe della tabella di destra e solo le righe corrispondenti della tabella di sinistra. Se non sono presenti righe corrispondenti nella tabella di sinistra, il join vi aggiunge i valori NULL.

Quella che segue è la sintassi di un RIGHT JOIN:

SELEZIONA colonne

DALLA tabella1

GIUNZIONE A DESTRA table2 SU tabella1.nome_colonna = tabella2.nome_colonna;

JOIN ESTERNO COMPLETO

Il prossimo tipo di join che incontrerai nei database SQL è un FULL OUTER JOIN. Questo tipo di join restituisce tutte le righe quando esiste una corrispondenza nella tabella di destra o di sinistra. Se non esiste alcun valore corrispondente in nessuno dei due, restituisce NULL per le colonne della tabella senza corrispondenza.

Di seguito viene illustrata la sintassi di un FULL OUTER JOIN:

SELEZIONA colonne

DALLA tabella1

FULL OUTER JOIN tabella2 SU tabella1.nome_colonna = tabella2.nome_colonna;

È bene tenere presente che non tutti i motori di database supportano i FULL OUTER JOINS. Per raggiungere questo obiettivo, potrebbe essere necessario lavorare con altri tipi di JOINS o sottoquery.

Esempi:

Esploriamo alcuni esempi su come possiamo utilizzare questi tipi di join per unire tre tabelle in SQL.

Esempio 1: utilizzo di INNER JOIN

Iniziamo con un INNER JOIN. Supponiamo di voler recuperare un elenco di film, l'inventario del noleggio e i dettagli del noleggio corrispondenti.

Possiamo utilizzare più INNER JOINS sulle tabelle associate come mostrato nell'esempio seguente:

SELEZIONARE

titolo.film,

inventario.inventario_id,

noleggio.data_noleggio

DA

film

Inventario INNER JOIN SU

film.film_id = inventario.film_id

Noleggio INNER JOIN SU

inventory.inventory_id = noleggio.inventory_id;

Nella query di esempio fornita, iniziamo unendo le tabelle film e inventario in base alla colonna 'film_id'. Prendiamo quindi il set risultante e lo uniamo alla tabella di noleggio in base alla colonna 'inventory_id'.

Ciò garantisce di unire tre tabelle con un INNER JOIN di base. L'insieme risultante è il seguente:

Esempio 2: utilizzo di INNER JOIN e LEFT JOIN

Diciamo che ora vogliamo l'elenco dei film, l'elenco degli inventari di noleggio (se presenti) e i dettagli di noleggio associati.

Vogliamo anche assicurarci che anche se un film non dispone di un inventario a noleggio, lo includiamo comunque nel risultato. È qui che entrano in gioco INNER JOIN e LEFT JOIN.

Considera il seguente esempio:

SELEZIONARE

titolo.film,

inventario.inventario_id,

noleggio.data_noleggio

DA

film

Inventario INNER JOIN SU

film.film_id = inventario.film_id

SINISTRA ISCRIVITI noleggio SU

inventory.inventory_id = noleggio.inventory_id;

In questo esempio, utilizziamo un INNER JOIN per unire la tabella del film e dell'inventario per garantire di ottenere i titoli con l'inventario disponibile. Utilizziamo quindi LEFT JOIN per unirci alla tabella di noleggio per recuperare i dettagli del noleggio se disponibili e NULL per qualsiasi titolo che non abbia una cronologia di noleggio.

L'insieme risultante è il seguente:

Conclusione

In questo tutorial abbiamo imparato a conoscere i vari tipi di JOINS in SQL, come funzionano e come possiamo usarli per combinare tre tabelle.