Junção de tabelas complicada com sql
18/01/2006
0
Tenho 4 tabelas sendo
OS, Itemos, Produto, Serviço
preciso fazer uma busca e imprimir os dados das tabelas em QR.
fiz desta maneira e esta dando erro.
Select * From PRODUTOS,RECEITAS,ITEMOS where RECEITAS.NUMERO = ITEMOS.OS and ITEMOS.PRODUTO = PRODUTOS.DESCRICAO AND RECEITAS.NUMERO =´+QuotedStr(Nuos.text));
Neste caso, não retornar nenhum item, se tiro SERVICO, retornar os itens de produto, mas não o serviço, preciso retornar para o campo codigo do relatório a ref_fornecedor dos produtos e serviços.
alguem poderia me ajudar a resolver esta questão?
A Ideia é localiza na tabela ITEMOS todos os produtos e retornar para o campo Codigo a REF_FORN, depois retornar os Serviços e para o campo CODIGO a REF_FORNE da tabela serviços
Desde ja agradeço qualquer ajuda.
Claudio Pinho
Dpinho
Posts
23/01/2006
Tnaires
Eu não consegui entender mto bem o q vc quer.
´não retornar nenhum item, se tiro SERVICO, retornar os itens de produto, mas não o serviço, preciso retornar para o campo codigo do relatório a ref_fornecedor dos produtos e serviços. ´
Seja mais claro.
E, se possível, coloque aqui as estruturas da tabela.
Abraços
23/01/2006
Tnaires
(Consulta que retorna os fornecedores da tabela ITEMOS)
UNION
(Consulta que retorna os fornecedores da tabela SERVICOS)
Abraços
23/01/2006
Dpinho
poderia me dar um exemplo???
23/01/2006
Tnaires
23/01/2006
Dpinho
Tabelas Vendas
Numero, Valortotal
Tabela Itemvendas
Ref_Produto
Descrição
Valor unitario
Quantidade
Sendo que nesta tabela tambem gravo tanto produtos como serviços
Tabela Serviços
Ref_Serviço
Descrição
Valor
Tabela produtos
codigo
Ref_Forn
Descrição
Valor
O meu relatorio esta imprimindo o Cabeçalho da OS, mas quando tenho que imprimir os itens, preciso localizar na tabela de Items todos os produtos e tambem todos os serviços, como gravo na tabela somente a descrição do produto tenho que localizar na tabela produtos e retornar a ref_forn, depois tenho que localizar os serviços na tabela de serviços e retonar o codigo do serviço tambem buscando pelo campo produto da tabela de itens.
bem se não incluo somente os produtos fica tudo bem, so não sai a REf_Forn, mas se tentar colocar os serviços não retornar nada, nem mesmo os produtos.
agradeço qualquer ajuda
23/01/2006
Tnaires
Pelo que eu entendi:
- vc grava produtos e serviços em ItensVendas;
- a relação entre itens e produtos é ItensVendas.Descricao e Produtos.Descricao;
- a relação entre itens e serviços é ItensVendas.Ref_Produto e Servicos.Ref_Servico.
Se Ref_Forn e Ref_Servico forem do mesmo tipo de dados, uma operação UNION pode ser efetuada da seguinte forma:
SELECT P.Ref_Forn FROM Produtos P INNER JOIN ItensVendas I ON (I.Descricao = P.Descricao) UNION SELECT S.Ref_Servico FROM Servicos S INNER JOIN ItensVendas I ON (I.Ref_Produto = S.Ref_Servico)
Essa consulta retorna todos os fornecedores dos produtos e acrescenta ao resultado todos os serviços.
Cada campo adicional deve ser colocado nas duas consultas, e devem ser do mesmo tipo de dados.
Esta resposta foi baseada no q eu entendi do seu problema. Se eu entendi errado, por favor me desculpe.
Abraços
23/01/2006
Dpinho
[color=red:c350610be7]
a relação entre itens e serviços é ItensVendas.descrição e Servicos.descriçao[/color:c350610be7]
Obrigado pela sua ajuda ate aqui
24/01/2006
Tnaires
Então é só mudar a última linha.
SELECT P.Ref_Forn FROM Produtos P INNER JOIN ItensVendas I ON (I.Descricao = P.Descricao) UNION SELECT S.Ref_Servico FROM Servicos S INNER JOIN ItensVendas I ON (I.Descricao = S.Descricao) -- essa linha mudou
Teste a consulta e fale pra nós se era o q vc queria.
Abraços.
Clique aqui para fazer login e interagir na Comunidade :)