sábado, 29 de agosto de 2015

LEFT OUTER JOIN y RIGHT OUTER JOIN

En nuestra publicación anterior hablamos sobre el OUTER JOIN, indicamos que académicamente éstos eran conocidos como “reuniones” y que entre las distintas reuniones que podían realizarse estaban las “reuniones por la izquierda” y las “reuniones por la derecha”.

Recordemos que un OUTER JOIN es una consulta que se realiza entre dos tablas cuando se requiere que aparezcan todos los registros de una de ellas sin importar que en la otra existan registros relacionados. Si la tabla que contiene todos los registros está a la “izquierda” de la cláusula JOIN, debe utilizarse un “LEFT OUTER JOIN” y si esta tabla está a la “derecha” de la cláusula JOIN, debe utilizarse un “RIGHT OUTER JOIN”.

En la publicación anterior se usó como ejemplo una consulta que mostraba la información de los clientes y sus facturas: si el cliente no tenía facturas, la información de éstas vendría con valores NULL. Esto se escribió de la siguiente manera:

SELECT * FROM 
CLIENTE AS C LEFT OUTER JOIN FACTURA AS F 
ON C.ID_CLIENTE = F.ID_CLIENTE;

En este caso, se utilizó un LEFT OUTER JOIN ya que la tabla con todos los registros (Clientes) está a la izquierda de la instrucción LEFT OUTER JOIN. Si la tabla de clientes hubiera estado a la derecha del JOIN, esta consulta hubiera traído resultados idénticos:

SELECT * FROM 
FACTURA AS F RIGHT OUTER JOIN CLIENTE AS C
ON F.ID_CLIENTE = C.ID_CLIENTE;

Las reuniones por la izquierda y la derecha son conceptos antagónicos pero al ser implementadas racionalmente se obtienen resultados idénticos.

No hay comentarios: