Riepilogo: in questo tutorial, imparerai a conoscere la clausola MySQLLEFT JOIN
e come applicarla per interrogare i dati da due o più tabelle.
Introduzione a MySQL LEFT JOIN
IlLEFT JOIN
consente di interrogare i dati da due o più tabelle. Simile alla clausolaINNER JOIN
,LEFT JOIN
è una clausola facoltativa dell’istruzioneSELECT
, che appare immediatamente dopo la clausolaFROM
.,
Supponiamo di voler unire due tabelle t1
et2
.
La seguente istruzione mostra come utilizzare la clausola LEFT JOIN
per unire le due tabelle:
Code language: SQL (Structured Query Language) (sql)
Quando si utilizza la clausola LEFT JOIN
, vengono introdotti i concetti della tabella sinistra e della tabella destra.
Nella sintassi precedente, t1
è la tabella di sinistra e t2
è la tabella di destra.,
La clausolaLEFT JOIN
seleziona i dati a partire dalla tabella di sinistra (t1
). Corrisponde a ogni riga della tabella di sinistra (t1
) con ogni riga della tabella di destra (t2
) in base ajoin_condition
.
Se le righe di entrambe le tabelle causano la condizione join valutaTRUE
,LEFT JOIN
combina colonne di righe di entrambe le tabelle in una nuova riga e include questa nuova riga nelle righe di risultato.,
nel caso In cui la riga della tabella a sinistra (t1
) non corrisponde con ogni riga della tabella di destra(t2
), LEFT JOIN
ancora unisce le colonne delle righe di entrambe le tabelle in una nuova riga e includono la nuova riga nella riga di risultato. Tuttavia, utilizza NULL
per tutte le colonne della riga dalla tabella di destra.
In altre parole, LEFT JOIN
restituisce tutte le righe della tabella di sinistra indipendentemente dal fatto che una riga della tabella di sinistra abbia una riga corrispondente dalla tabella di destra o meno., Se non c’è corrispondenza, le colonne della riga della tabella di destra conterranno NULL
.
Il seguente diagramma di Venn consente di visualizzare come il LEFT JOIN
clausola funziona:
MySQL LEFT JOIN esempi
prendiamo alcuni esempi di utilizzo del tag LEFT JOIN
clausola.,
1) Utilizzo della clausola MySQL LEFT JOIN per unire due tabelle
Vedere le seguenti tabellecustomers
eorders
nel database di esempio.
Ogni cliente può avere zero o più ordini mentre ogni ordine deve appartenere a un cliente.,
la query utilizza il LEFT JOIN
clausola di trovare a tutti i clienti e i loro ordini:
Code language: SQL (Structured Query Language) (sql)
in Alternativa, è possibile salvare scrivere utilizzando la tabella alias:
Code language: SQL (Structured Query Language) (sql)
In questo esempio:
-
customers
è la tabella a sinistra eorders
è la tabella a destra. - La clausola
LEFT JOIN
restituisce tutti i clienti, compresi i clienti che non hanno alcun ordine., Se un cliente non ha un ordine, i valori nella colonnaorderNumber
estatus
sonoNULL
.,
a Causa di entrambe le tabelle clienti e ordini hanno lo stesso nome di colonna ( customerNumber
) nella condizione di join con la parità di operatore, è possibile utilizzare la sintassi seguente:
Code language: SQL (Structured Query Language) (sql)
Le clausole seguenti sono equivalenti:
Code language: SQL (Structured Query Language) (sql)
E
Code language: SQL (Structured Query Language) (sql)
Se si sostituisce il LEFT JOIN
clausola per il INNER JOIN
clausola, vi saranno mostrati anche il solo clienti che hanno almeno un ordine.,
2) Utilizzo della clausola MySQL LEFT JOIN per trovare righe non corrispondenti
La clausolaLEFT JOIN
è molto utile quando si desidera trovare righe in una tabella che non ha una riga corrispondente da un’altra tabella.,”> per trovare i clienti che non hanno fine:
Code language: SQL (Structured Query Language) (sql)
3) L’utilizzo di MySQL SINISTRA UNIRSI, tre tabelle
Vedi le tre tabelle seguenti tag employees
customers
e payments
:
in Questo esempio utilizza due LEFT JOIN
clausole di unire le tre tabelle: employees
customers
e payments
.,
Code language: SQL (Structured Query Language) (sql)
Questa immagine mostra l’uscita parziale:
Come funziona.
- Il primo
LEFT JOIN
restituisce tutti i dipendenti e i clienti che hanno rappresentato ciascun dipendente oNULL
se il dipendente non è responsabile di alcun cliente. - Il secondo
LEFT JOIN
restituisce i pagamenti di ciascun cliente rappresentato da un dipendente oNULL
se il cliente non ha alcun pagamento.
Condizione nella clausola WHERE vs., SULLA clausola
Vedere il seguente esempio.
Code language: SQL (Structured Query Language) (sql)
Questo esempio ha utilizzato la clausolaLEFT JOIN
per interrogare i dati dalle tabelleorders
eorderDetails
. La query restituisce l’ordine e le relative voci del numero d’ordine10123
.,
Tuttavia, se si sposta la condizione dalla WHERE
clausola ON
clausola:
Code language: SQL (Structured Query Language) (sql)
Si avrà un significato diverso.,
In questo caso, la query restituisce tutti gli ordini, ma solo l’ordine 10123
avranno linea di elementi associati con esso come nella foto seguente:
si Noti che per INNER JOIN
clausola, condizione nel ON
clausola è equivalente alla condizione nel WHERE
clausola.
In questo tutorial, hai imparato come usare la clausola MySQL LEFT JOIN
per unire i dati da due o più tabelle.,
- Questo tutorial è stato utile?
- Sì