..


Links Patrocinados

O oposto de um INNER JOIN ou para obter os registros não correspondem

Artigo escrito por Max Bossi

Quem sabe o que o conhecimento de SQL é o JOIN. Em nossos guias e outros artigos que explicou como o JOIN e como você pode criar relações entre tabelas diferentes em um banco de dados.

O requisito mais comum é satisfeito pelo instrumento JOIN para encontrar correspondências entre duas tabelas, caso em que auxilia a cláusula INNER JOIN que localiza com precisão e retorna os campos que satisfazem a correspondência procurada dentro de duas ou mais tabelas envolvidas na JOIN.

Muito menos intuitivo é a necessidade de identificar os campos que de outra forma não tem um fósforo dentro do JOIN.

Vamos dar um exemplo.
Suponha que você tem que gerenciar um banco de dados de um e-commerce é composto de apenas duas tabelas:

  • clientes (contendo os dados mestre de clientes)
  • ordens (contendo os pedidos feitos pelos clientes)
Agora suponha que você deseja extrair duas listas diferentes de clientes: 1) uma lista de clientes que já fez uma encomenda, 2) a lista de clientes que ainda não comprei nada.

Para satisfazer o primeiro requisito, é claro, é bastante simples:

 



 SELECIONE CUSTOMER.FIRST, CUSTOMER.LAST







 FROM clientes







 INNER ordens de junção







 ON = clienti.id ordini.id_cliente







 ORDER BY ASC CUSTOMER.LAST

 
e até agora nenhum problema.

Mas como podemos fazer para reverter o resultado? Bem ... Primeiro, não use um LEFT JOIN, INNER JOIN, mas a fim de encontrar um jogo não está completo, mas parcial, onde, no entanto, os resultados da tabela da esquerda são retornados de qualquer maneira.
Sem isso, vamos procurar (utilizando a cláusula WHERE) registra falta (ou seja, não encontrados no relatório) e depois identificado como NULL (em SQL NULL é definido como uma espécie de "valor especial", que identifica a ausência de valor ..)

Vamos ver o código:

 



 SELECIONE CUSTOMER.FIRST, CUSTOMER.LAST







 FROM clientes







 LEFT JOIN Orders







 ON = clienti.id ordini.id_cliente







 ONDE ESTÁ NULL ordini.id_cliente







 ORDER BY ASC CUSTOMER.LAST

 
O resultado é, de fato, a lista de nomes de clientes que nunca compraram nada.

Na mesma categoria ...
E-Learning
MS Access (Curso) MS Access (Curso)
Saiba como criar e gerenciar bancos de dados com facilidade e rapidez. A partir de 29 €.
MySQL (Curso) MySQL (Curso)
Gestão de banco de dados open-source. A partir de 39 €.
SQL e Banco de Dados (Curso) SQL e Banco de Dados (Curso)
Criar e gerenciar bancos de dados relacionais. A partir de 39 €.
Links Patrocinados