|
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_name |
Sales |
Date |
| Los Angeles |
1500 € |
05-Jan-1999 |
| San Diego |
250 € |
07-Jan-1999 |
| Los Angeles |
300 € |
08-Jan-1999 |
| Boston |
700 € |
08-Jan-1999 |
Tabella Geography
| region_name |
store_name |
| East |
Boston |
| East |
New York |
| West |
Los Angeles |
| West |
San 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 © 2013 1keydata.com Tutti i diritti riservati.
|