Problema Consulta com Outer Join
Prezado colaboradores
Estou tendo dificuldade no select abaixo, Tenho tres tabelas : produto, estoque e filial.
Quero que liste todos os produtos que estao no estoque para cada tabela indepentente de estar ou não no estoque.
O problema é que a filial que não contem estoque sai com o estoque da outra.
Grato pela colaboração
Marcos
Select Estoque.Codigo_Filial, Grade, Produto.Codigo_Produto, Descricao,
Codigo_Barra, Codigo_Produto_Cliente, Preco1,
Preco2, Preco3, Preco_Promocao, Data_Promocao,
(Estoque.Qtd_Loja + Estoque.Qtd_Deposito + Estoque.Qtd_Geral) As Saldo,
Filial.Nome
from Produto Full Outer Join Estoque
On Produto.Codigo_Produto = Estoque.Codigo_Produto, Filial
where Ativo = ´N´
Order by descricao
Estou tendo dificuldade no select abaixo, Tenho tres tabelas : produto, estoque e filial.
Quero que liste todos os produtos que estao no estoque para cada tabela indepentente de estar ou não no estoque.
O problema é que a filial que não contem estoque sai com o estoque da outra.
Grato pela colaboração
Marcos
Select Estoque.Codigo_Filial, Grade, Produto.Codigo_Produto, Descricao,
Codigo_Barra, Codigo_Produto_Cliente, Preco1,
Preco2, Preco3, Preco_Promocao, Data_Promocao,
(Estoque.Qtd_Loja + Estoque.Qtd_Deposito + Estoque.Qtd_Geral) As Saldo,
Filial.Nome
from Produto Full Outer Join Estoque
On Produto.Codigo_Produto = Estoque.Codigo_Produto, Filial
where Ativo = ´N´
Order by descricao
Marcosrodias
Curtidas 0
Respostas
Afarias
30/10/2003
vc só está definindo a relação (JOIN) para as tabelas Produto e Estoque -- vc deve tb definir ´onde´ Filial entra nessa história.
T+
T+
GOSTEI 0
Marcosrodias
30/10/2003
O problema é esse pode dar uma dica ?
Obrigado
Marcos
Obrigado
Marcos
GOSTEI 0
Afarias
30/10/2003
|O problema é esse pode dar uma dica ?
Não sem conhecer suas tabelas (ou pelo menos os campos principais como chaves primárias e estrangeiras).
o lance é q vc tem q ter a chave primária de FILIAL em alguma das outras 2 tabelas (provavelmente ESTOQUE) como chave estrangeira, dai vc faz o JOIN.
ex:
select * from filial
full join estoque on (estoque.filial = filial.codigo)
full join produto on (produto.codigo = estoque.produto)
Mas uma coisa, só use FULL [OUTTER] JOIN se vc realmente precisa -- pode custar caro a performance.
T+
Não sem conhecer suas tabelas (ou pelo menos os campos principais como chaves primárias e estrangeiras).
o lance é q vc tem q ter a chave primária de FILIAL em alguma das outras 2 tabelas (provavelmente ESTOQUE) como chave estrangeira, dai vc faz o JOIN.
ex:
select * from filial
full join estoque on (estoque.filial = filial.codigo)
full join produto on (produto.codigo = estoque.produto)
Mas uma coisa, só use FULL [OUTTER] JOIN se vc realmente precisa -- pode custar caro a performance.
T+
GOSTEI 0
Marcosrodias
30/10/2003
Ola aFarias
Deu certo sua instrução, mas se não for abusar muito esqueci de dizer que no resultado da consulta quero listar todos os produtos da tabela produto mesmo que não tenha na estoque.
O Select ficou com esta abaixo.
Mais uma vez obrigado pela ajuda.
Um Abraco
Marcos Roberto
Select Estoque.Codigo_Filial, Grade, Produto.Codigo_Produto, Descricao,
Codigo_Barra, Codigo_Produto_Cliente, Preco1,
Preco2, Preco3, Preco_Promocao, Data_Promocao,
(Estoque.Qtd_Loja + Estoque.Qtd_Deposito + Estoque.Qtd_Geral) As Saldo, Filial.Nome
from Filial
Left Join Estoque On (Estoque.Codigo_Filial = Filial.Codigo_Filial)
Left Join Produto On (Produto.Codigo_Produto = Estoque.Codigo_Produto)
where Ativo = ´N´
Order by descricao
Deu certo sua instrução, mas se não for abusar muito esqueci de dizer que no resultado da consulta quero listar todos os produtos da tabela produto mesmo que não tenha na estoque.
O Select ficou com esta abaixo.
Mais uma vez obrigado pela ajuda.
Um Abraco
Marcos Roberto
Select Estoque.Codigo_Filial, Grade, Produto.Codigo_Produto, Descricao,
Codigo_Barra, Codigo_Produto_Cliente, Preco1,
Preco2, Preco3, Preco_Promocao, Data_Promocao,
(Estoque.Qtd_Loja + Estoque.Qtd_Deposito + Estoque.Qtd_Geral) As Saldo, Filial.Nome
from Filial
Left Join Estoque On (Estoque.Codigo_Filial = Filial.Codigo_Filial)
Left Join Produto On (Produto.Codigo_Produto = Estoque.Codigo_Produto)
where Ativo = ´N´
Order by descricao
GOSTEI 0