Ir para conteúdo
Fórum Script Brasil

anderson810311

Membros
  • Total de itens

    3
  • Registro em

  • Última visita

Posts postados por anderson810311

  1. 21 minutos atrás, Denis Courcy disse:

    Em minha base de teste criei as tabelas abaixo e populei conforme a imagem que você forneceu:

    
    CREATE TABLE rec_lider(
    cd VARCHAR(30),
    totalRecebido INTEGER)
    ;
    INSERT INTO rec_lider(cd,totalrecebido)
    VALUES('OSASCO',20),
    ('CAJAMAR',10),
    ('são PAULO',15),
    ('OSASCO',30),
    ('OSASCO',40),
    ('JUNDIAI',50),
    ('RECIFE',10),
    ('RECIFE',40),
    ('OSASCO',20),
    ('CAJAMAR',30)
    ;
    CREATE TABLE rec_fiscal(
    cd VARCHAR(30),
    totalRecebimento INTEGER)
    ;
    INSERT INTO rec_fiscal(cd,totalrecebimento)
    VALUES('OSASCO',20),
    ('CAJAMAR',10),
    ('são PAULO',15),
    ('OSASCO',30),
    ('OSASCO',40),
    ('JUNDIAI',50),
    ('RECIFE',10),
    ('RECIFE',40),
    ('OSASCO',20),
    ('CAJAMAR',30)
    ;

    Executei o select abaixo:

    
    
    SELECT rl.Unidade, `Total Recebido`, `Total Recebimento`
    FROM (SELECT cd AS Unidade,
       SUM(total_recebido) AS `Total Recebido`
       FROM rec_lider
       GROUP BY cd
    ) rl
    INNER JOIN (SELECT cd AS Unidade,
       SUM(total_recebimento) AS `Total Recebimento`
       FROM rec_fiscal
       GROUP BY cd
    ) rf ON rf.Unidade = rl.Unidade
    GROUP BY rl.Unidade
    ;

     

    Denis, Muitooooo Obrigado!.

    Estava já umas 3 a 4 semanas nisso e nada de concluir por esta dificuldade, fico hiper agradecido com essa sua contribuição e solução, me ajudou e muito!

    Aqui deu tudo certinho, agora consegui, :)

    Parabéns pelo seu empenho em ajudar pessoas como eu que não entende muito, rsrs

    Valeu mesmo.

  2. Em 07/11/2016 at 19:04, Denis Courcy disse:

    Conforme mostra a imagem que você postou no outro site e que tomei a liberdade de postar aqui,

    tabelas.png

    Isto acontece por causa do join que você está impondo em seu select .

    Segundo a estrutura de suas tabelas, cada elemento de rec_lider apontará para vários elementos de rec_fiscal que correspondam a igualdade rec_lider.cd = rec_fiscal.cd.

    Exemplo: Tomando cd = Osasco, O primeiro registro de rec_lider(Osasco, 20) apontará para os seguintes registros em rec_fiscal (Osasco 20),((Osasco 30), Osasco, 40) e (Osasco, 20); O registro (Osasco, 30) em rec_fiscal apontará para os mesmos registros em rec_fiscal e etc.

    A solução é somar  rec_lider antes de conectar o join. Somar os dados de rec_fiscal, também, antes de  conectar o join. E realizar um join para exibir os totais.

    Por que fazer assim?

    Porque assim, assim rec_fiscal.cd terá somente um registro por cd, assim como rec_lider.cd

    Então teremos:

    
    SELECT Unidade, `Total Recebido`, `Total Auditado`, `Total Devolvido`
    FROM (SELECT rec_lider.cd AS Unidade,
       SUM(rec_lider.total_recebido) AS `Total Recebido`,
       FROM rec_lider
       GROUP BY rec_lider.cd
    ) rl
    INNER JOIN (SELECT rec_fiscal.cd AS Unidade,
       SUM(rec_fiscal.total_recebimento) AS `Total Auditado`,
       SUM(rec_fiscal.total_devolvido) AS `Total Devolvido`
       FROM rec_fiscal
       GROUP BY rec_fiscal.cd
    ) rf ON rf.Unidade = rc.Unidade
    GROUP BY rl.Unidade

     

    Denis, boa tarde.

    Desculpe dar o retorno agora, consegui entrar agora aqui no fórum, porém fiz oque você me pediu e não consegui, coloquei direto no phpmyadmin porém não deu certo.

    Pode me ajudar e me mostrar aonde errei?

    coloquei esta ajuda também em outro fórum, e coloquei os bds para testes, vou colocar aqui também.

    http://www.logsystem.com.br/forum/rec_fiscal.sql

    http://www.logsystem.com.br/forum/rec_lider.sql

    pode me ajudar mais uma vez por favor.

     

    Obrigado.

     

  3. Pessoal, 

    Tenho duas tabelas:

    1º rec_lider
    2º rec_fiscal

    ambas com dados variados dentro das tabelas, porém preciso buscar três informações entre as duas, vou ver se consigo explicar aqui embaixo, tentei de tudo e não consegui, preciso muito de ajuda nessa soma.

    Vamos lá, vou explicar aqui embaixo:

    1º Tabela (rec_lider), tenho dentro dela o cd, total_recebido
    2º Tabela (rec_fiscal), tenho dentro dela o cd, total_recebimento e total_devolvido

    Estou usando o seguinte critério no MySql:

    SELECT
    rec_lider.cd AS Unidade,
    SUM(rec_lider.total_recebido) AS `Total Recebido`,
    SUM(rec_fiscal.total_recebimento) AS `Total Auditado`,
    SUM(rec_fiscal.total_devolvido) AS `Total Devolvido`
    FROM rec_lider
    INNER JOIN rec_fiscal ON rec_lider.cd = rec_fiscal.cd
    GROUP BY rec_lider.cd

    As informações estão vindo, porém esta multiplicando e ficando muito maior que o correto, tipo vou no banco conto a quantidade por exemplo de "total_recebido = 10" so que neste critério acima ele me retorno tipo "total_recebido = 110" por exemplo", já tentei de tudo não consegui um jeito de fazer correto, gostaria de pedir uma ajuda aqui para este meu problema que acredito ser bem simples, más não estou conseguindo de jeito nenhum.

    Postei esse mesma dificuldade em outro fórum "Ao Calcular Valores ou Quantidade o banco multiplica pela quantidade de registro - Ajuda" porém uma pessoa tentou me ajudar más não consegui fazer oque ele pediu dar certo, segui os passos dele más não retornou correto a tabela.

    Alguém aqui pode me ajudar, por favor?

    Obrigado.

     

     

×
×
  • Criar Novo...