Google
 

terça-feira, 25 de setembro de 2007

SELECT usando INNER JOIN, LEFT e RIGHT


Muita gente usa ainda um forma normal de SELECT entre tabelas que se torna lerda e que pode ganhar mais performance se usarmos INNER, LEFT e RIGHT JOIN, vamos imaginar a seguinte situação você tenha duas tabelas: Clientes e Vendas, relacionadas entre si. Na tabela de Clientes, você tem o cadastro de todos os clientes da loja. Na tabela de Vendas, você tem as vendas que foram realizadas pelos clientes da loja, agora suponha ainda que não é obrigado o cliente ser cadastrado para efetuar uma venda.

Neste cenário, podemos ter três situações:

1 - Existem clientes que ainda não fizeram nenhuma compra na loja.
2 - Existem vendas que foram efetuadas por clientes não cadastrados no sistema.
3 - Existem vendas que foram realizadas por clientes cadastrados.

INNER JOIN: O Inner Join é utilizado nas situações em que você quer selecionar registros das duas tabelas, desde que as mesmas possuam informações cruzadas (relacionadas). No exemplo abaixo a consulta vai retornar os clientes cadastrados que efetuaram compras.

SELECT campos FROM Clientes c INNER JOIN Venda v ON c.cod_cliente = v.cod_cliente

LEFT JOIN: O Left Join ele aplica o conceito de Outer Join na tabela que se encontrar à esquerda da relação (ou seja, o resultado vem da tabela à esquerda). No nosso exemplo a consulta retorna apenas os clientes que ainda não efetuaram nenhuma compra na loja.

SELECT campos FROM Clientes c LEFT OUTER JOIN Venda v ON c.cod_cliente = v.cod_cliente WHERE c.cod_cliente IS NULL

RIGHT JOIN: O Right Join aplica o conceito de Outer Join na tabela que se encontrar à direita da relação (ou seja, o resultado vem da tabela à direita). No nosso exemplo a consulta retorna apenas as vendas que foram realizadas por clientes não cadastrados na loja.

SELECT campos FROM Clientes c RIGHT OUTER JOIN Venda v ON c.cod_cliente = v.cod_cliente WHERE v.cod_cliente IS NULL


Nenhum comentário:

Publicidade