Join interno vs. Join esterno

In SQL, un join viene utilizzato per confrontare e combinare - letteralmente join - e restituire righe di dati specifiche da due o più tabelle in un database. Un join interno trova e restituisce i dati corrispondenti dalle tabelle, mentre un join esterno trova e restituisce i dati corrispondenti e alcuni dati diversi dalle tabelle.

Inner Join

Un join interno si concentra sulla comunanza tra due tabelle. Quando si utilizza un join interno, devono essere presenti almeno alcuni dati corrispondenti tra due (o più) tabelle da confrontare. Un join interno cerca nelle tabelle i dati corrispondenti o sovrapposti. Dopo averlo trovato, il join interno combina e restituisce le informazioni in una nuova tabella.

Esempio di Inner Join

Consideriamo uno scenario comune di due tabelle: prezzi e quantità dei prodotti. Le informazioni comuni nelle due tabelle sono il nome del prodotto, quindi quella è la colonna logica su cui unire le tabelle. Ci sono alcuni prodotti comuni nelle due tabelle; altri sono unici per uno dei tavoli e non hanno una corrispondenza nell'altro tavolo.

Un join interno sui prodotti restituisce informazioni solo sui prodotti comuni in entrambe le tabelle.

Join esterno

Un join esterno restituisce un set di record (o righe) che include ciò che restituirebbe un join interno ma include anche altre righe per le quali non è stata trovata alcuna corrispondenza corrispondente nell'altra tabella.

Esistono tre tipi di join esterni:

  • Join esterno sinistro (o Join sinistro)
  • Join esterno destro (o Join destro)
  • Full Outer Join (o Full Join)

Ognuno di questi join esterni si riferisce alla parte dei dati che viene confrontata, combinata e restituita. A volte vengono prodotti null in questo processo poiché alcuni dati vengono condivisi mentre altri no.

Join esterno sinistro

Un join esterno sinistro restituirà tutti i dati nella Tabella 1 e tutti i dati condivisi (quindi, la parte interna dell'esempio del diagramma di Venn), ma solo i dati corrispondenti della Tabella 2, che è il join destro.

Esempio di join sinistro

Nel nostro database di esempio, ci sono due prodotti - arance e pomodori - sulla "sinistra" (tabella dei prezzi ) che non hanno una voce corrispondente sulla "destra" (tabella delle quantità). In un'unione a sinistra, queste righe sono incluse nel set di risultati con un NULL nella colonna Quantità. Le altre righe nel risultato sono uguali al join interno.

Join esterno destro

Un join esterno destro restituisce i dati della tabella 2 e tutti i dati condivisi, ma solo i dati corrispondenti della tabella 1, che è il join sinistro.

Esempio di join destro

Simile all'esempio del join sinistro, l'output di un join esterno destro include tutte le righe del join interno e due righe - broccoli e squash - dalla "destra" (tabella delle quantità ) che non hanno voci corrispondenti sulla sinistra.

Join esterno completo

Un join esterno completo, o full join, che non è supportato dal popolare sistema di gestione del database MySQL, combina e restituisce tutti i dati da due o più tabelle, indipendentemente dal fatto che siano presenti informazioni condivise. Pensa a un join completo semplicemente duplicando tutte le informazioni specificate, ma in una tabella, anziché più tabelle. Dove mancano i dati corrispondenti, verranno prodotti null.

Queste sono solo le basi, ma molte cose possono essere fatte con i join. Ci sono anche join che possono escludere altri join!

Video che spiega i join interni e quelli esterni

Questo video spiega la differenza tra vari tipi di join. È pronto per iniziare nel punto in cui inizia la discussione sui join.

Articoli Correlati