SQL - UNIONES DERECHAS

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

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

Sintaxis

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

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

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 RIGHT JOIN de la siguiente manera.

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

Esto produciría el siguiente resultado:

+------+----------+--------+---------------------+
| ID   | NAME     | AMOUNT | DATE                |
+------+----------+--------+---------------------+
|    3 | kaushik  |   3000 | 2009-10-08 00:00:00 |
|    3 | kaushik  |   1500 | 2009-10-08 00:00:00 |
|    2 | Khilan   |   1560 | 2009-11-20 00:00:00 |
|    4 | Chaitali |   2060 | 2008-05-20 00:00:00 |
+------+----------+--------+---------------------+
sql-using-joins.htm