DISI Dipartimento di Informatica e Scienze dell'Informazione

Join

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
  1. 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.

  2. 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.

  3. 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.