L'oparatore di join permette di correlare i dati contenuti in tabelle diverse, sulla base
di valori uguali in attributi con lo stesso dominio.
In SQL si può ottenere questo comportamente usando la query di selezione
tra più tabelle (e scrivendo opportunamente la clausola where)
oppure usando in modo esplicito l'operatore di join. Con questo operatore si
può distinguere tra le condizioni di join (ottenute sulla base dei valori
di attributi comuni) e le condizioni di selezione (per la scelta dei record
che soddisfano determinate condizioni).
Esistono vari tipi di join, denominati con le parole chiave
inner, full outer, right outer, left outer
- Inner join
La sintassi dell'operatore di inner join ha una struttura
simile a quella seguente:
select (elenco attributi)
from tabella1 join tabella2
on tabella1.attributok = tabella2.attributoj
where (condizione di selezione)
Le righe coinvolte nel join sono generalmente un sottoinsieme delle righe di ciascuna
tabella di partenza (tabella1 e tabella2 nell'esempio).
Può infatti capitare che alcune righe non vengano considerate in quanto
non esistono valori corrispondenti tra gli attributi di join
(attributok e attributoj nell'esempio).
A questo punto viene applicata la condizione espressa nella clausola di
where per estrarre, tra tutte le righe determinate dal join, solo quelle che
soddisfano anche la condizione di selezione.
- Full outer join
Se le esigenze dell'applicazione richiedono di mantenere le righe delle tabelle
di origine si può usare il full outer join. In tutte le righe per cui non
esistono corrispondenze tra i valori degli attributi di join viene inserito il valore
nullo.
- Left outer join e right outer join
Il left outer join restituisce lo stesso risultato dell'inner join, esteso con le
righe della tabella che compare a sinistra per le quali non esiste una corrispondente
riga nella tabella di destra. In questo caso agli attributi di join viene
assegnato il valore nullo. Il right join è l'operatore simmetrico, e restituisce
le righe della tabella di destra.
|