SQL Outer Join





SQL > Comandi SQL > Outer Join

Precedentemente, abbiamo visto l'unione sinistra, o interna, in cui vengono selezionate le righe comuni alle tabelle che partecipano a un'unione. Si vedranno adesso quei casi in cui vengono selezionati degli elementi esistenti in una tabella a prescindere dalla loro presenza o meno nella seconda tabella. A questo punto, è necessario utilizzare il comando SQL OUTER JOIN

La sintassi per l’elaborazione di un’unione esterna nel linguaggio SQL dipende dal database. Ad esempio, in Oracle, è necessario posizionare un "(+)" nella clausola WHERE nell’altro lato della tabella della quale si desiderano includere tutte le righe.

Si supponga di disporre delle seguenti due tabelle:

Tabella Store_Information
Store_NameSalesTxn_Date
Los Angeles150005-Jan-1999
San Diego25007-Jan-1999
Los Angeles30008-Jan-1999
Boston70008-Jan-1999

Tabella Geography
Region_NameStore_Name
EastBoston
EastNew York
WestLos Angeles
WestSan Diego

e che si desideri trovare la quantità delle vendite relative a tutti i negozi. Se si elabora un’unione regolare, i dati desiderati non potranno essere recuperati in quanto il dato “New York” andrà perduto, motivo per cui non viene visualizzato nella tabella Store_Information. Per questo motivo, è necessario elaborare un’unione esterna sulle due tabelle precedenti:

SELECT A1.Store_Name, SUM(A2.Sales) SALES
FROM Geography A1, Store_Information A2
WHERE A1.Store_Name = A2.Store_Name (+)
GROUP BY A1.Store_Name;

Si noti che in questo caso si sta utilizzando una sintassi di Oracle per unione esterna.

Risultato:

Store_Name SALES
Boston 700
New York
Los Angeles 1800
San Diego 250

Nota: quando nessuna corrispondenza è presente nella seconda tabella, viene restituito il valore NULL. In questo caso, "New York" non appare nella tabella Store_Information, perciò il suo valore corrispondente nella colonna "SALES" è NULL.

SQL Concatenate >>



Copyright © 2016   1keydata.com   Tutti i diritti riservati