SQL - UNIONES A LA IZQUIERDA

El SQL LEFT JOINdevuelve todas las filas de la tabla de la izquierda, incluso si no hay coincidencias en la tabla de la derecha. Esto significa que si la cláusula ON coincide con 0 (cero) registros en la tabla de la derecha; la combinación seguirá devolviendo una fila en el resultado, pero con NULL en cada columna de la tabla de la derecha.

Esto significa que una combinación izquierda devuelve todos los valores de la tabla izquierda, más los valores coincidentes de la tabla derecha o NULL en caso de que no haya un predicado de combinación coincidente.

Sintaxis

La sintaxis básica de un LEFT JOIN es como sigue.

SELECT table1.column1, table2.column2...
FROM table1
LEFT JOIN table2
ON table1.common_field = table2.common_field;

Aquí, la condición dada podría ser cualquier expresión dada según su requisito.

Ejemplo

Considere las siguientes dos tablas,

Table 1 - La tabla CLIENTES es la siguiente.

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

Table 2 - La tabla de pedidos es la siguiente.

+-----+---------------------+-------------+--------+
| OID | DATE                | CUSTOMER_ID | AMOUNT |
+-----+---------------------+-------------+--------+
| 102 | 2009-10-08 00:00:00 |           3 |   3000 |
| 100 | 2009-10-08 00:00:00 |           3 |   1500 |
| 101 | 2009-11-20 00:00:00 |           2 |   1560 |
| 103 | 2008-05-20 00:00:00 |           4 |   2060 |
+-----+---------------------+-------------+--------+

Ahora, unamos estas dos tablas usando LEFT JOIN de la siguiente manera.

SQL> SELECT  ID, NAME, AMOUNT, DATE
   FROM CUSTOMERS
   LEFT JOIN ORDERS
   ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;

Esto produciría el siguiente resultado:

+----+----------+--------+---------------------+
| ID | NAME     | AMOUNT | DATE                |
+----+----------+--------+---------------------+
|  1 | Ramesh   |   NULL | NULL                |
|  2 | Khilan   |   1560 | 2009-11-20 00:00:00 |
|  3 | kaushik  |   3000 | 2009-10-08 00:00:00 |
|  3 | kaushik  |   1500 | 2009-10-08 00:00:00 |
|  4 | Chaitali |   2060 | 2008-05-20 00:00:00 |
|  5 | Hardik   |   NULL | NULL                |
|  6 | Komal    |   NULL | NULL                |
|  7 | Muffy    |   NULL | NULL                |
+----+----------+--------+---------------------+
sql-using-joins.htm