LEFT e RIGHT JOIN
LEFT JOIN
Um LEFT JOIN, também conhecido como um LEFT OUTER JOIN, é um tipo de operação SQL que preserva todas as linhas da tabela à esquerda (ou primeiro) na consulta, independentemente de haver uma linha correspondente na tabela à direita (ou segunda).
Quando uma correspondência é encontrada, as colunas da tabela direita são preenchidas com os valores correspondentes. No entanto, se não houver correspondência, o resultado incluirá nulos nas colunas originárias da tabela à direita.
Essa junção é útil ao precisar criar uma lista abrangente de uma tabela ao acrescentar dados relacionados de outra, mesmo quando essas relações estão incompletas ou ausentes.
SELECT customers.customer_name, orders.order_id
FROM sales.customers AS customers
LEFT JOIN sales.orders AS orders ON customers.customer_id = orders.customer_id;
A consulta SQL usando um LEFT JOIN recupera todos os clientes da tabela sales.customers, incluindo aqueles sem pedidos correspondentes na tabela sales.orders. A cláusula ON especifica que o campo customer_id vincula as duas tabelas.
Para clientes que fizeram pedidos, a order_id da tabela orders é exibida. No entanto, se um cliente não tiver pedidos, o resultado ainda incluirá o cliente, com a coluna order_id exibindo valores nulos.
RIGHT JOIN
Uma RIGHT JOIN, também conhecida como um RIGHT OUTER JOIN, é uma operação SQL que garante que todas as linhas da tabela à direita (ou segunda) sejam incluídas no resultado, independentemente de haver uma linha correspondente na tabela à esquerda (ou na primeira).
Nos casos em que nenhuma correspondência é encontrada, as colunas da tabela esquerda exibem valores nulos.
Esse tipo de junção geralmente é usado para se concentrar nos dados na tabela à direita e, ao mesmo tempo, acrescentar informações da tabela à esquerda onde quer que existam relações.
SELECT customers.customer_name, orders.order_id
FROM sales.customers AS customers
RIGHT JOIN sales.orders AS orders ON customers.customer_id = orders.customer_id;
Essa consulta recupera todas as linhas da tabela sales.orders, garantindo que cada ordem seja incluída no resultado, mesmo que não haja nenhuma entrada associada na tabela sales.customers.
A cláusula ON especifica a relação entre as duas tabelas por meio da coluna customer_id. Se um pedido tiver um cliente correspondente, a coluna customer_name será preenchida com os customer_name, valores nulos exibidos para registros incompatíveis.