Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) INNER JOIN com mais de uma clausula de comparaçã


VolneyRock

Pergunta

Pessoal, prcurei sobre isso no fórum e não achei, me perdoem se eu procurei errado.

Preciso fazer um inner join com três comparações e não to consegundo de maneira nenhuma, com certeza pelo fato de eu ser novato.
Segue o que eu tentei fazer:
SQL1.jpg

Nesse caso eu não queria o primeiro resultado pois ele já existe na tabela estoque, eu queri asó o segundo que não existe na tabela estoque, só na pedido.

Tentei desta outra maneira, mas deu erro:
SQL2a.jpg

Mais uma tentativa:
print.png

Editado por VolneyRock
Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

Oi VolneyRock,

você disse em seu primeito post

Preciso fazer um inner join com três comparações e não to consegundo de maneira nenhuma, com certeza pelo fato de eu ser novato.

Segue o que eu tentei fazer:

...

Nesse caso eu não queria o primeiro resultado pois ele já existe na tabela estoque, eu queri asó o segundo que não existe na tabela estoque, só na pedido.

Até aqui estou vendo você se debater como um peixe fora d'água.

O que você quer é obter a relação dos pedidos que não estão no estoque?

Se sim, poste, por gentileza, a estrutura das tabelas pedido e estoque. Não precisa conter todos os casmpos. Somente os necessários a esta pesquisa.

Se não, informe o que você realmente quer e também poste a estrutura das tabelas conforme solicitado acima.

Só assim poderei ajudá-lo corretamente.

Link para o comentário
Compartilhar em outros sites

  • 0

Isso, o que eu quero é obter o que está em pedido e não está no estoque, pra nesse caso eu inserir em estoque.
Segue a estrutura das tabelas, se estiver complicado me avise q tenta fazer de uma forma diferente:

Tabela estoque:iouOq2e.png

Tabela pedido:

FMWqHrS.png

Aqui as meninas preenchidas:

E9pcYyi.pngbVORycm.png

Editado por VolneyRock
Link para o comentário
Compartilhar em outros sites

  • 0

Tente assim:

SELECT p.ref, p.descricao, p.cor, p.tamanho, p.quant
FROM pedido p
LEFT JOIN estoque e ON e.ref = p.ref AND p.cor = e.cor AND p.tamanho = e.tamanho
WHERE e.id IS NULL;
Link para o comentário
Compartilhar em outros sites

  • 0

Entender a lógica é fácil.

O LEFT JOIN pega todos os elementos do conjunto PEDIDOS, que está a esquerda do relacionamento, e os elementos do conjunto ESTOQUE que possuirem os mesmos PARES ORDENADOS. Representados, neste caso, pelos campos e.ref = p.ref AND p.cor = e.cor AND p.tamanho = e.tamanho

Como você queria somente os elementos do conjunto PEDIDOS que NÃO ESTIVESSEM no conjunto estoque, bastou acrescentar uma condicional que informasse NULO para ESTOQUE. Neste caso a escolha óbvia foi testar o ID de ESTOQUE.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...