Inner Join vs. Outer Join


In SQL, a aderire è usato per confrontare e combinare - letteralmente join - e restituire specifiche righe di dati 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 dissimili dalle tabelle.

Join interno

Un inner join 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 confrontate. Un inner join cerca le tabelle per i dati corrispondenti o sovrapposti. Dopo averlo trovato, il join interno combina e restituisce le informazioni in una nuova tabella.

Esempio di Join interno

Consideriamo uno scenario comune di due tabelle: prezzi e quantità dei prodotti. L'informazione comune nelle due tabelle è il nome del prodotto, quindi quella è la colonna logica per unire le tabelle sopra. Ci sono alcuni prodotti che sono comuni nelle due tabelle; altri sono unici per uno dei tavoli e non hanno una corrispondenza nell'altra tabella.

Un interiore si unisce Prodotti restituisce informazioni solo su quei prodotti che sono comuni in entrambe le tabelle.

Outer Join

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

Esistono tre tipi di join esterni:

  • Left Outer Join (or Left Join)
  • Right Outer Join (o Right Join)
  • Full Outer Join (o Full Join)

Ciascuno di questi join esterni fa riferimento alla parte dei dati che viene confrontata, combinata e restituita. A volte in questo processo verranno prodotti valori null poiché alcuni dati vengono condivisi mentre altri dati non lo sono.

Left Outer Join

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 dalla Tabella 2, che è il join corretto.

Esempio di partecipazione a sinistra

Nel nostro database di esempio, ci sono due prodotti - arance e pomodori - sulla "sinistra" (Prezzi tabella) che non hanno una voce corrispondente sul 'giusto' (tabella Quantità). In un join di sinistra, queste righe sono incluse nel set di risultati con un valore NULL nella colonna Quantità. Le altre righe nel risultato sono le stesse del join interno.

Giusto outer join

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

Esempio di join destro

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

Full Outer Join

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

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

Video che spiega i join interni vs esterni

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

Riferimenti

  • Differenza tra unione interna ed esterna - Stack Overflow
  • SQL Inner Join - Quackit
  • SQL Outer Join - Quackit
  • Utilizzando Inner Joins - Microsoft SQL Server
  • Utilizzando Outer Joins - Microsoft SQL Server
  • Rappresentazione visiva di join SQL - CodeProject
  • Wikipedia: Join (SQL)