N�o sei qual Banco voc� esta usando, mas no Oracle dessa forma daria
certo...
Select ProdutoPreco.CdEmpresa,
ProdutoPreco.CdFilial,
ProdutoPreco.CdTabela,
ProdutoPreco.SqTabela,
ProdutoPreco.TpItem,
ProdutoPreco.CdProduto,
ProdutoPreco.VlCusto,
ProdutoPreco.VlVenda,
ProdutoPreco.CdIndiceCusto,
ProdutoPreco.CdIndiceVenda,
ProdutoPreco.Obs ,
ProdutoPreco.UpdRegistro,
produto.DsVenda
>From ProdutoPreco,
( Select CdEmpresa,
CdFilial,
CdProduto,
DsVenda
From Produto
Union All
Select CdEmpresa,
CdFilial,
CdServico,
Descricao
From Servico ) produto
Where cdtabela = '10'
And sqtabela= 1
And produtopreco.tpitem = "5"
And ProdutoPreco.CdEmpresa = Produto.CdEmpresa
And ProdutoPreco.CdFilial = Produto.CdFilial
And ProdutoPreco.CdProduto = Produto.CdProduto
A unica coisa que pode complicar desta forma, � voc� possui um servi�o com o
mesmo c�digo do produto, pois isso causar� a duplica��o das linhas.
----- Original Message -----
From: Alexandre <[EMAIL PROTECTED]>
To: Virtualand - SQLWin (Correio eletr�nico) <[EMAIL PROTECTED]>
Sent: Monday, August 07, 2000 10:38 AM
Subject: [sqlwin] Joins entre tabelas
> Preciso construir uma clausula SQL de uma tabela base e mais duas outras
para pegar a descricao.
> Tenho a tabela ProdutoPreco e preciso da descricao do Produto - tabela
Produto - ou a descricao do Servico - tabela Servico.
> A clausula abaixo est� replicando os registros. Se utilizo apenas Produto
ou Servico junto de ProdutoPreco , a sele��o fica correta mas com as 3
tabelas duplica tudo.
> As chaves primarias s�o:
> Produto = CdEmpresa, CdFilial, CdProduto
> Servico = CdEmpresa, CdFilial, CdServico
> ProdutoPreco = CdEmpresa, CdFilial, CdTabela, SqTabela, TpItem, CdProduto
nesta ordem.
>
> Se algu�m puder ajudar, grato.
>
> Select ProdutoPreco.CdEmpresa, ProdutoPreco.CdFilial,
ProdutoPreco.CdTabela,
> ProdutoPreco.SqTabela, ProdutoPreco.TpItem,
ProdutoPreco.CdProduto,ProdutoPreco.VlCusto,
> ProdutoPreco.VlVenda, ProdutoPreco.CdIndiceCusto,
ProdutoPreco.CdIndiceVenda, ProdutoPreco.Obs ,
> ProdutoPreco.UpdRegistro , DsVenda = CASE TpItem WHEN '5' then
Produto.DsVenda
> else Servico.Descricao end from ProdutoPreco, Produto , Servico
> Where cdtabela = '10' and sqtabela= 1 and produtopreco.tpitem = "5" and
> ( (ProdutoPreco.CdEmpresa = Produto.CdEmpresa and
> ProdutoPreco.CdFilial = Produto.CdFilial and
> ProdutoPreco.CdProduto = Produto.CdProduto)
> or
> (ProdutoPreco.CdEmpresa = Servico.CdEmpresa and
> ProdutoPreco.CdFilial = Servico.CdFilial and
> ProdutoPreco.CdProduto = Servico.CdServico) )
>
> Lista de Centura SQLWindows
> Administrador : [EMAIL PROTECTED]
> [ http://www.centuraexplorer.com ]
> Para sair desta lista mande mensagem para:
> [EMAIL PROTECTED] sem nada no Subject e
> com o comando a seguir no corpo da msg:
> "unsubscribe sqlwin" (sem as aspas)
==============================================
Lista de Centura SQLWindows
Administrador : [EMAIL PROTECTED]
[ http://www.centuraexplorer.com ]
Para sair desta lista mande mensagem para:
[EMAIL PROTECTED] sem nada no Subject e
com o comando a seguir no corpo da msg:
"unsubscribe sqlwin" (sem as aspas)
==============================================