JJunior 0 Denunciar post Postado Janeiro 15, 2007 Caros amigos, boa tarde!Necessito buscar dados entre duas tabelas e efetuar alguns calculos entre alguns campos, onde tenho na tabela "CONT_SAIDA" a estrutura: Tabela "CONT_SAIDA"COD_FORN | NroCORTE | CODPROD | DATA_SAIDA | NF_SAIDA | QTD_SAIDA 109 | 315 | 123456 | 01/01/2007 | 554433 | 555Já na segunda tabela (CONT_ENTRADA) tenho a seguinte estrutura:Tabela "CONT_ENTRADA" NroCORTE | COD_FORN | DATA_ENTRADA | NF_ENTRADA | QTD_ENTRADA 315 | 109 | 10/01/2007 | 998877 | 100 315 | 109 | 15/01/2007 | 998889 | 110 Estou procedendo da seguinte maneira, com a minha instrução SQL:SELECT SUM(A.QTD_SAIDA)AS SAIDAS, {totalizar as saídas} SUM(QTD_ENTRADA)AS ENTRADAS, {totalizar as entradas} SUM(QTD_SAIDA - QTD_ENTRADA)AS SALDO {calcular a o Saldo restante} COUNT(B.NF_ENTRADA)AS NOTAS, {contar a quantidade de entregas efetuadas} FROM CONT_SAIDA A, CONT_ENTRADA B WHERE A.NroCORTE = :CORTE and A.NroCORTE = B.NroCORTE Como resultado, esta me retornando 1110 peças de saída, ao invés de 555 peças conforme tabela de saída. Pergunta:1) Onde estou pecando?Obs: Já coloquei a clausula "DISTINCT" e nada.Ps: - Estou voltando a programar em Delphi e a utilizar Instruções SQL. - As tabelas são Paradox.Quem puder me dar uma luz, ficarei imensamente grato.Um grande abraço a todos e um execelente 2007José de Moura Compartilhar este post Link para o post Compartilhar em outros sites
Carlos Edu 0 Denunciar post Postado Janeiro 15, 2007 Bom Cara, seguinte, não entendi muito bem a estrutura das suas tabelas e nem o relacionamento que fez? A tabela que mostrou em cima é a estrutura real ou uma consulta tbm?Carlos Edu Compartilhar este post Link para o post Compartilhar em outros sites
Hugo Slepicka 0 Denunciar post Postado Janeiro 15, 2007 Confuso até o Talo, mas beleza... ta faltando o Group By ai, não tá não? eu acho que tá sim em!!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
JJunior 0 Denunciar post Postado Janeiro 15, 2007 Bom Cara, seguinte, não entendi muito bem a estrutura das suas tabelas e nem o relacionamento que fez? A tabela que mostrou em cima é a estrutura real ou uma consulta tbm?Carlos EduCarlos, boa tarde!É a estrutura real das tabelas sendo a primeira linha os campos e a segunda linha os valores contidos em cada um deles(os valores estão separados por um traço vertical " | " ).Busco fazer a relação entre elas pelo campo NroCorte, sendo A.NroCorte (referencia ao campo na tabela de Saidas) e B.NroCorte(referencia ao campo na tabela de Entradas).Grande abraço e obrigado pelo interesse.José Compartilhar este post Link para o post Compartilhar em outros sites
JJunior 0 Denunciar post Postado Janeiro 15, 2007 Confuso até o Talo, mas beleza...ta faltando o Group By ai, não tá não?eu acho que tá sim em!!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gifTudo bem Hugo?Acrescendo o GROUP BY o retorno é:Quantidade de Saidas = 555 - OKmas A Quantidade de Entradas fica = 100 {erro}, na realidade são 210 peçase O Saldo fica = 455 {erro}, na realidade são 345 peçasAbraços e muito obrigado.José Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Janeiro 16, 2007 Você sempre vai ter uma SAIDA para várias ENTRADAS ? O SQL gera os valores divergentes visto que ele multiplica o n° de saidas pelo n° de entradas, se tentar o SQL assim: SELECT A.NroCORTE, A.QTD_SAIDA AS SAIDAS, SUM(QTD_ENTRADA) AS ENTRADAS,(QTD_SAIDA - SUM(QTD_ENTRADA)) AS SALDO, COUNT(B.NF_ENTRADA) AS NOTASFROM CONT_SAIDA A, CONT_ENTRADA BWHERE A.NroCORTE = :CORTEand A.NroCORTE = B.NroCORTEgroup by A.NroCORTE, A.QTD_SAIDA Vai gerar o valor que deseja, mas no caso se tiver mais de um item de SAIDA, irá precisar fazer sub-selects para funcionar... Compartilhar este post Link para o post Compartilhar em outros sites
Hugo Slepicka 0 Denunciar post Postado Janeiro 16, 2007 Bom, criei as suas tabelas e simulei em casa, realmente com o Piradox fica meo difícil mandar uma instrução SQL que venha a suprir a sua necessidade, no caso acho que: Ou você faz como o Márcio falou... ou bola alguma rotina para calcular.... flw!!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Janeiro 16, 2007 Realmente, depois ainda precisa ver os comandos que o Paradox aceita, pois alguns comandos SQL ele não suporta, não sei se é o caso de sub-selects... mas somente testando... Compartilhar este post Link para o post Compartilhar em outros sites
Hugo Slepicka 0 Denunciar post Postado Janeiro 16, 2007 Tenho quase certeza que SubSelect ele não aceita, mas faz tempo que não uso... vale a tentativa!!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
JJunior 0 Denunciar post Postado Janeiro 16, 2007 Você sempre vai ter uma SAIDA para várias ENTRADAS ?O SQL gera os valores divergentes visto que ele multiplica o n° de saidas pelo n° de entradas, se tentar o SQL assim: SELECT A.NroCORTE, A.QTD_SAIDA AS SAIDAS, SUM(QTD_ENTRADA) AS ENTRADAS,(QTD_SAIDA - SUM(QTD_ENTRADA)) AS SALDO, COUNT(B.NF_ENTRADA) AS NOTASFROM CONT_SAIDA A, CONT_ENTRADA BWHERE A.NroCORTE = :CORTEand A.NroCORTE = B.NroCORTEgroup by A.NroCORTE, A.QTD_SAIDAVai gerar o valor que deseja, mas no caso se tiver mais de um item de SAIDA, irá precisar fazer sub-selects para funcionar...Marcio, bom dia!Muito obrigado, pela explanação. Realmente da certinho.Cara, por favor:Você comentou que, se houver mais de um item na saida eu deveria fazer sub-selects, certo?Vamos ver se entendi:No exemplo acima nos demos saida em um unico item (produto), já com a sua colocação será se nos tivermos dois ou mais itens(produtos) na saida?Pois bem eu nunca empreguei sub-select, como ficaria uma consulta empregando-a.Mais uma vez, Muito obrigado.Grande abraçoJoséTenho quase certeza que SubSelect ele não aceita, mas faz tempo que não uso...vale a tentativa!!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gifHugo, muito obrigado!Valeu garoto.Grande abraço.José Compartilhar este post Link para o post Compartilhar em outros sites