Il join genera una tabella che può essere utilizzata da sola o combinata tra loro. Si consiglia quindi di comprendere questi join e le loro distinzioni per determinare il join specifico e se in casi unici è necessario scegliere destra o sinistra.
Punti chiave
- Un join sinistro include tutti i record della tabella di sinistra e i record corrispondenti della tabella di destra, compilando i valori NULL per le righe senza corrispondenza.
- Un right join include tutti i record della tabella di destra e i record corrispondenti della tabella di sinistra, compilando i valori NULL per le righe senza corrispondenza.
- I join sinistro e destro sono immagini speculari l'uno dell'altro e possono essere intercambiabili a seconda dell'ordine della tabella nella query.
Join sinistro vs Join destro
Un join sinistro restituisce tutte le righe della tabella di sinistra e le righe corrispondenti della tabella di destra e, se non ci sono corrispondenze nella tabella di destra, il risultato conterrà valori nulli. Un join destro, come il join sinistro, ma restituisce tutte le righe della tabella di destra e le righe corrispondenti della tabella di sinistra.
Anche se non c'è corrispondenza sul lato destro del tavolo, il SQL LEFT processa in entrata tutte le voci dalla tabella di sinistra. Ciò implica che quando la clausola ON contiene 0 (zero) voci sul lato destro della tabella, il join restituirà comunque un record con NULL all'interno di ogni campo della tabella principale.
Il join destro, d'altra parte, rileva che anche nella tabella di sinistra, SQL RIGHT riceve e invia tutte le voci dalla tabella di destra.
Ciò implica che un right join fornisce tutti i dati dalla tabella corretta, nonché tutti i valori accettati dalle tabelle o NULL se non esiste un predicato di join appropriato per questa operazione.
Tavola di comparazione
Parametri di confronto | Unisciti a sinistra | Iscriviti a destra |
---|---|---|
Impiego | Collega più tabelle e fornisce tutti i record dalla tabella di sinistra e le righe corrispondenti da destra. | Unisce più tabelle e fornisce tutti i dati dalla tabella di destra, nonché le righe corrispondenti prima dalla tabella di sinistra. |
Esecuzione della query | Durante l'implementazione della query che include il join sinistro, tutte le voci delle tabelle vengono ricevute per prime, quindi i dati corrispondenti dei valori della colonna di destra della tabella vengono ottenuti utilizzando loop in pila e il valore NULL viene sostituito per altri dati senza corrispondenza. | Durante l'implementazione della query che include il right join, vengono prima ottenuti tutti i dati della tabella di destra, quindi vengono raccolti i record corrispondenti dei valori della colonna della tabella di sinistra utilizzando i cicli in pila. |
Set di risultati | Il valore del set di risultati sarà NULL o zero se non vengono trovati dati corrispondenti nella tabella corretta. | Il valore del set di risultati sarà NULL o zero se non vengono trovati dati corrispondenti nella tabella di sinistra. |
Termine sinonimo | UNIONE ESTERNO SINISTRO | GIUNZIONE ESTERNA DESTRA |
Sintassi | SELEZIONA nome/i colonna/i DA table1 SINISTRA UNISCI tabella2 ON tabella1.nome_colonna = tabella2.nome_colonna; | SELEZIONA nome_colonna/i DA table1 GIUSTO UNISCITI table2 ON tabella1.nome_colonna = tabella2.nome_colonna; |
Cos'è Left Join?
Per unire i dati da due database a seconda di una colonna contenente valori corrispondenti, utilizziamo JOIN in SQL. Ad esempio, se hai una tabella contenente i dati del cliente (ID cliente, prima cognome, identificatore, ecc.) e quindi un'altra tabella contenente i dati dell'ordine per un determinato momento (ID transazione, ora, ID cliente, ID prodotto, ecc.)
Diamo un'occhiata alla sintassi del Left Join per comprenderne correttamente l'utilità:
SELEZIONA nome/i colonna/i
DA table1
SINISTRA UNISCI tabella2
ON tabella1.nome_colonna = tabella2.nome_colonna
- 'SELEZIONA' – Inizia selezionando le categorie che desideriamo visualizzare nel set di dati.
- 'FROM' – Inserire i dati delle tabelle, in cui si desidera mantenere tutte le informazioni.
- 'LEFT JOIN' – Inserisci i dati della seconda tabella citata.
- 'ON' – Utilizzare questa frase per specificare quali campi verranno utilizzati per collegare le tabelle.
Se sono presenti più risultati corrispondenti, la colonna nella tabella di sinistra viene duplicata per includere tutti i dati direttamente dalla tabella di destra. Se non viene trovata alcuna corrispondenza, conserva la riga della tabella di sinistra e quindi inserisce NULL nelle colonne pertinenti della tabella di destra.
Cos'è Right Join?
Per dirla senza mezzi termini, l'operazione di join destro è molto simile al join sinistro, esattamente l'opposto.
I right join sono essenzialmente molto simili ai left join in quanto recuperano tutte le righe dalla tabella specificata nella frase RIGHT JOIN ma solo le righe corrispondenti dalla tabella specificata nella clausola FROM.
Il RIGHT JOIN è usato raramente poiché il contenuto di un RIGHT JOIN può essere ottenuto semplicemente scambiando le etichette delle due tabelle collegate in un LEFT JOIN.
Vale la pena ricordare che LEFT JOIN e RIGHT JOIN possono anche essere espressi come LEFT ESTERNO ORA così come RIGHT OUTER JOIN.
La sintassi per Right Join è descritta più avanti. Le operazioni dei join destro e sinistro sono identiche, ma in ordine inverso:
SELEZIONA nome/i colonna/i
DA table1
DESTRA JOIN table2
ON tabella1.nome_colonna = tabella2.nome_colonna
Principali differenze tra join sinistro e join destro
- La frase di join sinistra è più comunemente usata rispetto alla frase di join destra.
- La formula per il join sinistro è tutti i record corrispondenti + i record senza corrispondenza della tabella di sinistra, mentre la formula per il join destro è tutti i record corrispondenti + i record senza corrispondenza della tabella di destra.
- https://www.tutorialspoint.com/sql/sql-left-joins.htm#:~:text=The%20SQL%20LEFT%20JOIN%20returns,matches%20in%20the%20right%20table.&text=This%20means%20that%20a%20left,of%20no%20matching%20join%20predicate.
- https://mode.com/sql-tutorial/sql-right-join/#:~:text=Right%20joins%20are%20similar%20to,names%20in%20a%20LEFT%20JOIN%20.
Ultimo aggiornamento: 11 giugno 2023
Sandeep Bhandari ha conseguito una laurea in ingegneria informatica presso la Thapar University (2006). Ha 20 anni di esperienza nel campo della tecnologia. Ha un vivo interesse in vari campi tecnici, inclusi i sistemi di database, le reti di computer e la programmazione. Puoi leggere di più su di lui sul suo pagina bio.
Non credo che SQL RIGHT JOIN sia usato raramente come suggerito, ha i suoi usi di nicchia in query più complesse.
Capisco il tuo punto, ma SQL RIGHT JOIN è davvero una scelta meno frequente nella pratica.
Le differenze intrinseche tra i join destro e sinistro sono spiegate in modo così completo da ampliare significativamente la comprensione dei join SQL.
Assolutamente sì, questo articolo contiene un’analisi incredibilmente dettagliata e approfondita.
Penso che il contenuto qui sia troppo specifico e non particolarmente utile per coloro che non hanno una vasta esperienza con SQL.
È vero che il contenuto qui potrebbe essere più adatto a chi ha una comprensione più profonda di SQL.
Sebbene le informazioni qui siano interessanti, il tono dell'articolo a volte può sembrare un po' riservato.
Questa è davvero un'osservazione valida.
La tabella comparativa approfondita aiuta davvero a differenziare i due tipi di join. Questo articolo è davvero illuminante.
Di sicuro, questo articolo si distingue davvero.
Non potrei essere più d'accordo.
È assolutamente fondamentale comprendere le distinzioni tra join sinistro e destro e in quali situazioni dovrebbero essere utilizzati. Questo articolo realizza abilmente proprio questo.
Assolutamente! La meticolosa precisione è qualcosa da lodare.