Mauricio Sales 0 Report post Posted March 5, 2010 Olá Estou com um problema em uma sentença SQL, ela está repetindo os registros, são 7 registros e a sentença está trazendo 35. Alguém pode me dar um help???? Segue abaixo a sentença: select f.numerodocumento, c.nomefantasia, f.historico, f.datavencimento, f.valororiginal from fcfo c, flan f, gccusto g where f.codcfo = c.codcfo and f.codccusto = g.codccusto and f.codcoligada = g.codcoligada and f.pagrec = '1' and f.statuslan in ('0','1') AND F.datavencimento >=:DATAINICIO AND F.datavencimento <=:DATAFIN AND G.NOME =:CENTROCUSTO ORDER BY f.dataop1 Agradeço a atenção Quote Share this post Link to post Share on other sites
Mauricio Sales 0 Report post Posted March 5, 2010 Pessoal coloquei a sentença errada, a que está dando problema está abaixo: select f.codtb1flx, g.descricao, f.dataemissao, f.numerodocumento, c.nomefantasia, f.dataop1, f.valororiginal, f.valorbaixado, f.datavencimento, f.databaixa, f.historico from fcfo c, flan f, ftb1 g where f.codcfo = c.codcfo AND F.CODTB1FLX= G.CODTB1FLX AND f.datavencimento >=:DATAINICIO AND f.datavencimento <=:DATAFIN AND G.CODTB1FLX=:CONTASOPERACIONAIS AND f.pagrec = '2' AND f.statuslan = '1' order by f.datavencimento desc Agradeço a atenção Quote Share this post Link to post Share on other sites
Jair - Fórmula 184 Report post Posted March 5, 2010 Pessoalcoloquei a sentença errada, a que está dando problema está abaixo: select f.codtb1flx, g.descricao, f.dataemissao, f.numerodocumento, c.nomefantasia, f.dataop1, f.valororiginal, f.valorbaixado, f.datavencimento, f.databaixa, f.historico from fcfo c, flan f, ftb1 g where f.codcfo = c.codcfo AND F.CODTB1FLX= G.CODTB1FLX AND f.datavencimento >=:DATAINICIO AND f.datavencimento <=:DATAFIN AND G.CODTB1FLX=:CONTASOPERACIONAIS AND f.pagrec = '2' AND f.statuslan = '1' order by f.datavencimento desc Agradeço a atenção Mauricio, faltou relacionar alguns campos entre as tabelas envolvidas. Segue o correto: Select f.codtb1flx, g.descricao, f.dataemissao, f.numerodocumento, c.nomefantasia, f.dataop1, f.valororiginal, f.valorbaixado, f.datavencimento, f.databaixa, f.historico From fcfo c, flan f, ftb1 g Where f.codcfo = c.codcfo AND f.CODCOLCFO = c.CODCOLIGADA and F.CODTB1FLX= G.CODTB1FLX AND F.CODCOLIGADA = G.CODCOLIGADA and f.datavencimento >=:DATAINICIO and f.datavencimento <=:DATAFIN and G.CODTB1FLX=:CONTASOPERACIONAIS and f.pagrec = '2' and f.statuslan = '1' order by f.datavencimento desc Veja ae se resolve... Deve ser isso mesmo. Vc deve ter os mesmos códigos de CLIFOR ou mesmo de CCustos em mais de uma coligada. por sinal, não é o caso de filtrar também por este campo (f.CODCOLIGADA) ? Quote Share this post Link to post Share on other sites
Mauricio Sales 0 Report post Posted March 5, 2010 Mauricio, faltou relacionar alguns campos entre as tabelas envolvidas. Segue o correto: Select f.codtb1flx, g.descricao, f.dataemissao, f.numerodocumento, c.nomefantasia, f.dataop1, f.valororiginal, f.valorbaixado, f.datavencimento, f.databaixa, f.historico From fcfo c, flan f, ftb1 g Where f.codcfo = c.codcfo AND f.CODCOLCFO = c.CODCOLIGADA and F.CODTB1FLX= G.CODTB1FLX AND F.CODCOLIGADA = G.CODCOLIGADA and f.datavencimento >=:DATAINICIO and f.datavencimento <=:DATAFIN and G.CODTB1FLX=:CONTASOPERACIONAIS and f.pagrec = '2' and f.statuslan = '1' order by f.datavencimento desc Veja ae se resolve... Deve ser isso mesmo. Vc deve ter os mesmos códigos de CLIFOR ou mesmo de CCustos em mais de uma coligada. por sinal, não é o caso de filtrar também por este campo (f.CODCOLIGADA) ? funcionou sim Jair e tenho os mesmos códigos sim, como ficaria se eu tiver que filtrar pela coligada? Meu conhecimento em SQL é bem básico, por isso te pergunto. Obrigado pela atenção Abraço Quote Share this post Link to post Share on other sites
Dayana Fernandes 1 Report post Posted March 5, 2010 funcionou sim Jair e tenho os mesmos códigos sim, como ficaria se eu tiver que filtrar pela coligada?Meu conhecimento em SQL é bem básico, por isso te pergunto. Obrigado pela atenção Abraço Ficaria assim... Select f.codtb1flx, g.descricao, f.dataemissao, f.numerodocumento, c.nomefantasia, f.dataop1, f.valororiginal, f.valorbaixado, f.datavencimento, f.databaixa, f.historico From fcfo c, flan f, ftb1 g Where f.codcfo = c.codcfo AND f.CODCOLCFO = c.CODCOLIGADA and F.CODTB1FLX= G.CODTB1FLX AND F.CODCOLIGADA = G.CODCOLIGADA -- Recomendação: faça relacionamentos por JOIN e não diretamente no WHERE and f.datavencimento >=:DATAINICIO and f.datavencimento <=:DATAFIN and G.CODTB1FLX=:CONTASOPERACIONAIS and f.pagrec = '2' and f.statuslan = '1' --pode tirar estas aspas por se tratar de numérico, fica melhor o desempenho. AND F.CODCOLIGADA = 1 -- order by f.datavencimento desc Quote Share this post Link to post Share on other sites
Mauricio Sales 0 Report post Posted March 8, 2010 Ficaria assim...Select f.codtb1flx, g.descricao, f.dataemissao, f.numerodocumento, c.nomefantasia, f.dataop1, f.valororiginal, f.valorbaixado, f.datavencimento, f.databaixa, f.historico From fcfo c, flan f, ftb1 g Where f.codcfo = c.codcfo AND f.CODCOLCFO = c.CODCOLIGADA and F.CODTB1FLX= G.CODTB1FLX AND F.CODCOLIGADA = G.CODCOLIGADA -- Recomendação: faça relacionamentos por JOIN e não diretamente no WHERE and f.datavencimento >=:DATAINICIO and f.datavencimento <=:DATAFIN and G.CODTB1FLX=:CONTASOPERACIONAIS and f.pagrec = '2' and f.statuslan = '1' --pode tirar estas aspas por se tratar de numérico, fica melhor o desempenho. AND F.CODCOLIGADA = 1 -- order by f.datavencimento desc Muito obrigado pela ajuda, a sentença funcionou direitinho. Valeu Quote Share this post Link to post Share on other sites
markitu 17 Report post Posted March 8, 2010 Aviso Sobre MultiModeração para Membros Que bom que resolveu o problema. Agora no fórum existe o esquema de multimoderação onde o próprio usuário que abriu o post pode marcar como resolvido. Dá uma olhada no link abaixo que mostra como fazer. http://www.forumrm.com.br/index.php?showtopic=1555 Agradeceríamos se nos ajudasse já marcando o seu tópico sempre que resolvido. Quote Share this post Link to post Share on other sites
Mauricio Sales 0 Report post Posted March 8, 2010 Tópico Fechado / Resolvido. O mesmo foi marcado como resolvido por não haver mais nada a resolver, pelo mesmo ter ficado parado por muito tempo sem o membro que o iniciou voltar a participar ou comentar, ou por não ter mais comentários de nenhum outro membro do Fórum. Qualquer coisa, alguma dúvida ou questionamento sobre o assunto, pode postar novamente que analisaremos, ou se preferir, favor entrar em contato com a administração ou moderação, através do link: Administradores e Moderadores que retiraremos o STATUS de RESOLVIDO do seu título. Se preferir, mande um email para admin@forumrm.com.br solicitando. Quote Share this post Link to post Share on other sites