L’analisi proposta qui di seguito sulle join SQL necessita di alcune conoscenze di base relative al macro-argomento dei database relazionali; più nello specifico si parla di concetti come: relazioni, tuple, attributi o chiavi.
SQL Join – introduzione
Una Join SQL concede la possibilità di “interrogare” mediante query più tabelle costituenti i database relazionali. Le join restituiscono sottoforma di tabella i risultati ottenuti dalla combinazione dei dati memorizzati in diverse tabelle.
La Join SQL si basa su di una combinazione derivante da una selezione e un prodotto cartesiano ovvero su di una operazione algebrica relazionale. L’utente selezionerà quindi il tipo di join, definendo una condizione di selezione, in modo da determinare quali dati di pertinenza delle rispettive tabelle di output devono essere trasferiti alla tabella dei risultati.
Ogni Join è basato su delle operazioni di algebra relazionale, tra cui distinguiamo il prodotto cartesiano e la selezione.
- Prodotto cartesiano
- Selezione
Il prodotto cartesiano
Il prodotto cartesiano anche conosciuto come “unione incrociata” può essere definito come un’operazione che vede il collegamento di due o più insiemi. Tale prodotto è utilizzato, nel modello di database relazionale, per collegare diversi set di tuple sotto forma di tabelle. A questo punto si avrà come risultato di tale operazione un nuovo insieme di tuple ordinate dove ognuna di esse è composta da un elemento di ogni set iniziale.
L’operatore per il prodotto cartesiano nell’algebra relazionale è rappresentato dal segno di moltiplicazione (×).
Un’operazione in cui il prodotto cartesiano è dato da due tabelle di un database è conosciuta come Cross join nella terminologia SQL.
La selezione
Sempre con riferimento all’algebra relazionale, la selezione è una operazione che permette di relazionare tuple specifiche da un set iniziale, inviandole in seguito come risultato. Al fine di determinare quali tuple sono incluse nel set di risultati è possibile utilizzare una espressione di confronto. Il risultato della selezione sarà dato da un insieme di tuple caratterizzate da determinati requisiti. Tali tuple dovranno difatti soddisfare la condizione di selezione definita nell’espressione di confronto.
La lettera greca Sigma (σ) viene utilizzata come operatore in questo caso.
Tipologie di join SQL
Con riferimento al database relazionale, sono utilizzate diverse tipologie di join SQL le quali consentono di eseguire determinate query ricorrendo all’utilizzo di un insieme di tabelle di database. Per fare ciò è necessario che le tabelle selezionate siano collegate tra di loro mediante relazioni a chiave esterna.
Le tipologie di join più importanti sono elencate qui di seguito:
- Inner join: può essere definita come una forma filtrata della cross join. Relativamente a tale tipologia, solo le tuple di entrambe le tabelle di output (che soddisfino i criteri nonché la condizione di selezione definiti dall’utente) convergono nel risultato impostato essendo unite insieme.
- Outer join: può essere definita come un’estensione dell’inner join. In questo caso, le tuple di entrambe le tabelle di output soddisfacenti, come nel caso delle inner, la condizione di selezione precedentemente definita dall’utente, sono contenute nell’insieme dei risultati di una outer. Tali tipologie di join sono implementate di conseguenza come left, right, full outer join, analizzate nel dettaglio qui si seguito.
SQL JOIN
Un JOIN combina i record di due tabelle. Il JOIN abbina valori di colonne correlate in due tabelle.
Una query può contenere zero, una o più operazioni di JOIN.
SQL JOIN – Tipi
I Join vengono espressi in maniera logica usando la sintassi Transact-SQL come esplicitato qui di seguito:
Tipo |
Descrizione |
JOIN | Abbina i record di entrambe le tabelle |
LEFT JOIN o (Join di Sinistra) | Abbina i record della tabella sinistra (la prima) con i record della tabella destra |
RIGHT JOIN (Join di Destra) | Abbina i record della tabella destra (l’ultima) con i record della tabella sinistra |
FULL JOIN (Join Completa) | Include tutti i record di sinistra e di destra, indipendentemente dalla loro corrispondenza |
SQL JOIN – Diagramma
I dettagli su queste operazioni di JOIN sono analizzati qui di seguito.
SQL LEFT JOIN – Join di sinistra
Una LEFT JOIN esegue un join a partire dalla tabella di sinistra. Pertanto, vengono inclusi tutti i record corrispondenti della tabella di destra. Le righe senza corrispondenza avranno valori di colonna NULL (nulli).
SQL RIGHT JOIN – Join di destra
In questo caso si esegue un join a partire dalla tabella di destra. Pertanto, vengono inclusi tutti i record corrispondenti della tabella di sinistra. Le righe senza corrispondenza avranno valori di colonna NULL.
SQL FULL JOIN – Join completa
Una JOIN COMPLETA restituisce tutti i record di entrambe le tabelle, includendo i record che non hanno corrispondenze. Le righe senza corrispondenza avranno valori di colonna NULL.