Problema Consulta com Outer Join

Firebird

30/10/2003

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


Marcosrodias

Marcosrodias

Curtidas 0

Respostas

Afarias

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+


GOSTEI 0
Marcosrodias

Marcosrodias

30/10/2003

O problema é esse pode dar uma dica ?

Obrigado

Marcos


GOSTEI 0
Afarias

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+


GOSTEI 0
Marcosrodias

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


GOSTEI 0
POSTAR