Junção de tabelas complicada com sql
Bem é o sequinte:
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
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
Curtidas 0
Respostas
Dpinho
18/01/2006
Amigos, preciso disto com urgencia, me ajudem
GOSTEI 0
Tnaires
18/01/2006
Olá
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
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
GOSTEI 0
Tnaires
18/01/2006
Bom, pelo pouco q eu entendi, talvez uma UNION resolva seu problema.
(Consulta que retorna os fornecedores da tabela ITEMOS)
UNION
(Consulta que retorna os fornecedores da tabela SERVICOS)
Abraços
(Consulta que retorna os fornecedores da tabela ITEMOS)
UNION
(Consulta que retorna os fornecedores da tabela SERVICOS)
Abraços
GOSTEI 0
Dpinho
18/01/2006
Bom, pelo pouco q eu entendi, talvez uma UNION resolva seu problema.
(Consulta que retorna os fornecedores da tabela ITEMOS)
UNION
(Consulta que retorna os fornecedores da tabela SERVICOS)
Abraços
poderia me dar um exemplo???
GOSTEI 0
Tnaires
18/01/2006
Fica difícil dar um exemplo sem vc explicar as estruturas das tabelas que vc usa. Detalhe mais a estrutura do banco.
GOSTEI 0
Dpinho
18/01/2006
Fica difícil dar um exemplo sem vc explicar as estruturas das tabelas que vc usa. Detalhe mais a estrutura do banco.
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
GOSTEI 0
Tnaires
18/01/2006
OK.
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:
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
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
GOSTEI 0
Dpinho
18/01/2006
- a relação entre itens e serviços é ItensVendas.Ref_Produto e Servicos.Ref_Servico.
[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
[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
GOSTEI 0
Tnaires
18/01/2006
Ah, blz.
Então é só mudar a última linha.
Teste a consulta e fale pra nós se era o q vc queria.
Abraços.
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.
GOSTEI 0