English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Espressione LEFT JOIN SQL

In questo tutorial, imparerai come utilizzare il left join SQL per recuperare dati da due tabelle.

Utilizzando il left join

Una query LEFT JOIN restituisce tutte le righe della tabella sinistra e le righe della tabella destra che soddisfano le condizioni di connessione. Il left join èuna variante dell'unione esternaper cui è anche chiamataleft outer joinUnione destraUnione completa

La figura a维恩 mostra come funziona il left join.

Attenzione:Un'unione esterna è un tipo di unione che include righe nel risultato, anche se le righe delle due tabelle da unire potrebbero non corrispondere.

Per comprendere chiaramente questo, diamo un'occhiata a quanto segueemployeesdepartments表。

+--------+--------------+------------+---------+
| emp_id | emp_name                 | hire_date         | dept_id |
+--------+--------------+------------+---------+
|                 1 | Ethan Hunt     | 2001-05-01 |                         4 |
|                 2 | Tony Montana | 2002-07-15 |                         1 |
|                 3 | Sarah Connor | 2005-10-18 |                         5 |
|                 4 | Rick Deckard | 2007-01-03 |                         3 |
|      5 | Martin Blank | 2008-06-24 |    NULL |
+--------+--------------+------------+---------+

+---------+------------------+
| dept_id | dept_name       |
+---------+------------------+
|       1 | Administration   |
|       2 | Customer Service |
|       3 | Finance         |
|       4 | Human Resources  |
|       5 | Sales           |
+---------+------------------+
Tabella: employees
Tabella: departments

Ora, supponiamo che tu voglia recuperare l'ID, il nome e la data di assunzione di tutti i dipendenti e il nome del loro dipartimento, indipendentemente dal fatto che siano assegnati a qualsiasi dipartimento. Per ottenere questo tipo di set di risultati, dobbiamo applicare un join a sinistra.

La seguente istruzione utilizza campi comuni perdipendenti(employees) edepartments(tabella dei dipartimenti) connesse insieme per recuperare l'ID del dipendente, il nome, la data di assunzione e il nome del dipartimentodept_id. Include anche i dipendenti non assegnati a nessun dipartimento.

SELECT t1.emp_id, t1.emp_name, t1.hire_date, t2.dept_name
FROM employees AS t1 LEFT JOIN departments AS t2
ON t1.dept_id = t2.dept_id ORDER BY emp_id;

Suggerimento:Nel join, la tabella di sinistra è la tabella più a sinistra nel clause JOIN, mentre la tabella di destra è la tabella più a destra nel clause JOIN.

Eseguito l'ordine sopra, otterrai l'output seguente:

+--------+--------------+------------+-----------------+
| emp_id | emp_name     | hire_date  | dept_name       |
+--------+--------------+------------+-----------------+
|      1 | Ethan Hunt   | 2001-05-01 | Human Resources |
|      2 | Tony Montana | 2002-07-15 | Administration  |
|      3 | Sarah Connor | 2005-10-18 | Sales           |
|      4 | Rick Deckard | 2007-01-03 | Finance         |
|      5 | Martin Blank | 2008-06-24 | NULL            |
+--------+--------------+------------+-----------------+

Come potete chiaramente vedere, il JOIN a sinistra includeimpiegatotutte le righe del risultato della ricerca nella tabella (employees), indipendentemente dadepartmentsdella tabelladept_idCorrispondenza delle colonne.

Attenzione:Se c'è una riga nella tabella sinistra e nessuna corrispondenza nella tabella destra, le righe del risultato dell'associazione conterranno NULL per tutte le colonne della tabella destra.