Problema na consulta
Amigo
Meu problema é o seguinte. O Select abaixo contém informações sobre as seguntes tabelas: Grupo, SubGrupo, Fabricante, Cliente, Filial, Produto, Estoque. O Objetivo principal é mostrar todos os produtos que estão em estoque e até ai ele funcona sem problema. Mas tem uma particularidade que está me consumindo há tres dias e eu não conseguir resolver que é o seguinte:
Eu quero listar todos os produtos que estão na tabela produtos e que não estão na tabela estoque. Assim acrescento a linha And ((Qtd_Loja = 0) Or (Qtd_Loja is Null)) para listar produtos com saldo zero. Mas se não tiver no estoque o registro correspondente os itens de produto não sai na tabela.
Desejo que o select mostre os registros que estão na tabela produto e que não estejam na tabela estoque e tambem incluir os registros que tem na tabela estoque cujo campo Qtd_Loja seja igual a zero.
Grato pela coloboração.
select distinct Produto.Codigo_Produto, Filial.Codigo_Filial, Qtd_Loja,
Filial.Nome As NomeFilial, Produto.Descricao,
Estoque.Custo_Medio, Estoque.Custo_Final,
Produto.Codigo_Grupo, Produto.Codigo_SubGrupo,
Produto.Codigo_Fornecedor, Produto.Codigo_Barra,
Produto.Codigo_Produto_Cliente,
Produto.Preco1, Produto.Preco2, Produto.Preco3, Produto.Custo_Produto,
Produto.Custo_Moeda,(Estoque.Qtd_Loja * Produto.Custo_Produto) As Valor_Total, Estoque.Qtd_Loja
From Filial Left Join Estoque On Filial.Codigo_Filial = Estoque.Codigo_Filial,
Produto Left Join Estoque On Produto.Codigo_Produto = Estoque.Codigo_Produto,
Grupo, SubGrupo, Fabricante, Cliente, Filial
Where Produto.Codigo_Grupo = Grupo.Codigo_Grupo
And Produto.Codigo_SubGrupo = SubGrupo.Codigo_SubGrupo
And Produto.Codigo_Fabricante = Fabricante.Codigo_Fabricante
And Produto.Codigo_Fornecedor = Cliente.Codigo_Cliente
And Produto.Ativo = ´N´
And ((Filial.Codigo_Filial = 1) Or (Filial.Codigo_Filial Is Null))
Order By Filial.Codigo_Filial , Produto.Codigo_Produto[b:c7c8b8ab0c][/b:c7c8b8ab0c]
Meu problema é o seguinte. O Select abaixo contém informações sobre as seguntes tabelas: Grupo, SubGrupo, Fabricante, Cliente, Filial, Produto, Estoque. O Objetivo principal é mostrar todos os produtos que estão em estoque e até ai ele funcona sem problema. Mas tem uma particularidade que está me consumindo há tres dias e eu não conseguir resolver que é o seguinte:
Eu quero listar todos os produtos que estão na tabela produtos e que não estão na tabela estoque. Assim acrescento a linha And ((Qtd_Loja = 0) Or (Qtd_Loja is Null)) para listar produtos com saldo zero. Mas se não tiver no estoque o registro correspondente os itens de produto não sai na tabela.
Desejo que o select mostre os registros que estão na tabela produto e que não estejam na tabela estoque e tambem incluir os registros que tem na tabela estoque cujo campo Qtd_Loja seja igual a zero.
Grato pela coloboração.
select distinct Produto.Codigo_Produto, Filial.Codigo_Filial, Qtd_Loja,
Filial.Nome As NomeFilial, Produto.Descricao,
Estoque.Custo_Medio, Estoque.Custo_Final,
Produto.Codigo_Grupo, Produto.Codigo_SubGrupo,
Produto.Codigo_Fornecedor, Produto.Codigo_Barra,
Produto.Codigo_Produto_Cliente,
Produto.Preco1, Produto.Preco2, Produto.Preco3, Produto.Custo_Produto,
Produto.Custo_Moeda,(Estoque.Qtd_Loja * Produto.Custo_Produto) As Valor_Total, Estoque.Qtd_Loja
From Filial Left Join Estoque On Filial.Codigo_Filial = Estoque.Codigo_Filial,
Produto Left Join Estoque On Produto.Codigo_Produto = Estoque.Codigo_Produto,
Grupo, SubGrupo, Fabricante, Cliente, Filial
Where Produto.Codigo_Grupo = Grupo.Codigo_Grupo
And Produto.Codigo_SubGrupo = SubGrupo.Codigo_SubGrupo
And Produto.Codigo_Fabricante = Fabricante.Codigo_Fabricante
And Produto.Codigo_Fornecedor = Cliente.Codigo_Cliente
And Produto.Ativo = ´N´
And ((Filial.Codigo_Filial = 1) Or (Filial.Codigo_Filial Is Null))
Order By Filial.Codigo_Filial , Produto.Codigo_Produto[b:c7c8b8ab0c][/b:c7c8b8ab0c]
Marcosrodias
Curtidas 0
Respostas
Cabelo
24/07/2006
Colega... tenta o select assim
Você já seleciona os registros de produtos das duas tabelas no Left join, agora só precisa filtrar os registros da tabela Estoque...
select distinct Produto.Codigo_Produto, Filial.Codigo_Filial, Qtd_Loja, Filial.Nome As NomeFilial, Produto.Descricao, Estoque.Custo_Medio, Estoque.Custo_Final, Produto.Codigo_Grupo, Produto.Codigo_SubGrupo, Produto.Codigo_Fornecedor, Produto.Codigo_Barra, Produto.Codigo_Produto_Cliente, Produto.Preco1, Produto.Preco2, Produto.Preco3, Produto.Custo_Produto, Produto.Custo_Moeda,(Estoque.Qtd_Loja * Produto.Custo_Produto) As Valor_Total, Estoque.Qtd_Loja From Filial Left Join Estoque On Filial.Codigo_Filial = Estoque.Codigo_Filial, Produto Left Join Estoque On Produto.Codigo_Produto = Estoque.Codigo_Produto, Grupo, SubGrupo, Fabricante, Cliente, Filial Where Produto.Codigo_Grupo = Grupo.Codigo_Grupo And Produto.Codigo_SubGrupo = SubGrupo.Codigo_SubGrupo And Produto.Codigo_Fabricante = Fabricante.Codigo_Fabricante And Produto.Codigo_Fornecedor = Cliente.Codigo_Cliente And Produto.Ativo = ´N´ and ((Filial.Codigo_Filial = 0) Or (Filial.Codigo_Filial Is Null)) and Estoque.Qtd_Loja = 0 Order By Filial.Codigo_Filial , Produto.Codigo_Produto
Você já seleciona os registros de produtos das duas tabelas no Left join, agora só precisa filtrar os registros da tabela Estoque...
GOSTEI 0
Marcosrodias
24/07/2006
O problema é que usando o filtro que vc me informou nao dá certo.
Eu já tentei isso aqui and (Estoque.Qtd_Loja Is null Or Estoque.Qtd_Loja = 0) tambem mas nao conseguir.
Como exemplo na minha tabela produto tem um registro cujo Codigo_produto = 3 nao contem em estoque. E quando coloco sua sugestão ou como coloquei acima ele não apresenta o produto.
Grato pela sua coloaboração
Eu já tentei isso aqui and (Estoque.Qtd_Loja Is null Or Estoque.Qtd_Loja = 0) tambem mas nao conseguir.
Como exemplo na minha tabela produto tem um registro cujo Codigo_produto = 3 nao contem em estoque. E quando coloco sua sugestão ou como coloquei acima ele não apresenta o produto.
Grato pela sua coloaboração
GOSTEI 0
Cabelo
24/07/2006
Certo.... tenta assim então..
acredito que assim deva funcionar...
select distinct Produto.Codigo_Produto, Filial.Codigo_Filial, Qtd_Loja, Filial.Nome As NomeFilial, Produto.Descricao, Estoque.Custo_Medio, Estoque.Custo_Final, Produto.Codigo_Grupo, Produto.Codigo_SubGrupo, Produto.Codigo_Fornecedor, Produto.Codigo_Barra, Produto.Codigo_Produto_Cliente, Coalesce(Produto.Preco1, 0), Coalesce(Produto.Preco2, 0), Coalesec(Produto.Preco3, 0), Coalesec(Produto.Custo_Produto, 0), Produto.Custo_Moeda,(Coalesce(Estoque.Qtd_Loja, 0) * Coalesce(Produto.Custo_Produto, 0)) As Valor_Total, Coalesce(Estoque.Qtd_Loja, 0) From Filial Left Join Estoque On Filial.Codigo_Filial = Estoque.Codigo_Filial, Produto Left Join Estoque On Produto.Codigo_Produto = Estoque.Codigo_Produto, Grupo, SubGrupo, Fabricante, Cliente, Filial Where Produto.Codigo_Grupo = Grupo.Codigo_Grupo And Produto.Codigo_SubGrupo = SubGrupo.Codigo_SubGrupo And Produto.Codigo_Fabricante = Fabricante.Codigo_Fabricante And Produto.Codigo_Fornecedor = Cliente.Codigo_Cliente And Produto.Ativo = ´N´ and ((Filial.Codigo_Filial = 0) Or (Filial.Codigo_Filial Is Null)) or Estoque.Qtd_Loja = 0 Order By Filial.Codigo_Filial , Produto.Codigo_Produto
acredito que assim deva funcionar...
GOSTEI 0
Marcosrodias
24/07/2006
Infelizmente nao deu certo nao.
Tá brabo
Tá brabo
GOSTEI 0
Cabelo
24/07/2006
Infelizmente nao deu certo nao.
Tá brabo
Deu algum erro... ou simplesmente não retornou os dados corretamente..???
GOSTEI 0