LEFT e RIGHT JOIN
LEFT JOIN
Un LEFT JOIN, noto anche come LEFT OUTER JOIN, è un tipo di operazione SQL che preserva tutte le righe della tabella a sinistra (o prima) nella query, indipendentemente dal fatto che sia presente una riga corrispondente nella tabella a destra (o seconda).
Quando viene trovata una corrispondenza, le colonne della tabella destra vengono popolate con i valori corrispondenti. Tuttavia, se non esiste alcuna corrispondenza, il risultato include valori Null nelle colonne provenienti dalla tabella corretta.
Questo join è utile quando è necessario creare un elenco completo da una tabella aggiungendo dati correlati da un altro, anche quando tali relazioni sono incomplete o assenti.
SELECT customers.customer_name, orders.order_id
FROM sales.customers AS customers
LEFT JOIN sales.orders AS orders ON customers.customer_id = orders.customer_id;
La query SQL che usa un LEFT JOIN oggetto recupera tutti i clienti dalla sales.customers tabella, inclusi quelli senza ordini corrispondenti nella sales.orders tabella. La ON clausola specifica che il customer_id campo collega le due tabelle.
Per i clienti che hanno effettuato ordini, viene visualizzato il order_id dalla tabella orders. Tuttavia, se un cliente non dispone di ordini, il risultato include comunque il cliente, con la order_id colonna che visualizza valori Null.
RIGHT JOIN
Un'operazione RIGHT JOIN, nota anche come RIGHT OUTER JOIN, è un'operazione SQL che garantisce che tutte le righe della tabella di destra (o seconda) siano incluse nel risultato, indipendentemente dal fatto che sia presente una riga corrispondente nella tabella di sinistra (o prima).
Nei casi in cui non viene trovata alcuna corrispondenza, le colonne della tabella a sinistra visualizzano valori Null.
Questo tipo di join viene comunemente usato per concentrarsi sui dati nella tabella destra, aggiungendo al tempo stesso informazioni dalla tabella a sinistra ovunque esistano relazioni.
SELECT customers.customer_name, orders.order_id
FROM sales.customers AS customers
RIGHT JOIN sales.orders AS orders ON customers.customer_id = orders.customer_id;
Questa query recupera tutte le righe dalla sales.orders tabella, assicurandosi che ogni ordine sia incluso nel risultato, anche se non è presente alcuna voce associata nella sales.customers tabella.
La ON clausola specifica la relazione tra le due tabelle tramite la customer_id colonna . Se un ordine ha un cliente corrispondente, la customer_name colonna viene popolata con customer_name, i valori nulli vengono visualizzati per i record non corrispondenti.