MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    Select resumo em várias tabelas

    avatar
    castelhano.rafael
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 9
    Registrado : 03/05/2016

    Select resumo em várias tabelas Empty Select resumo em várias tabelas

    Mensagem  castelhano.rafael em 17/6/2020, 21:46

    Olá, tenho 4 tabelas com a seguinte estrutura:

    OCORRENCIAS

    • Data
    • Pasta

    TERCEIROS

    • Pasta
    • Acordo

    CUSTOS

    • Pasta
    • Valor

    COBRANCAS

    • Pasta
    • Valor

    Todas as tabelas relacionadas pelo campo Pasta. Preciso montar uma consulta que mostre na mesma linha, para cada pasta a soma dos acordos (tabela TERCEIROS), a soma dos valores da tabela CUSTOS, e a soma dos valores da tabela COBRANCAS, o resultado seria algo como:

    --

    Data                   Pasta          Acordos              Custos       Cobrancas

    17/05/2020       55                 850                       320                 50

    --

    Meu select está desta forma

    Código:
    SELECT OCORRENCIAS.Data, OCORRENCIAS.Pasta, SUM(TERCEIROS.Acordo) AS Acordos, SUM(CUSTOS.Valor) AS Custos, SUM(COBRANCAS.Valor) AS Cobrancas
    FROM ((OCORRENCIAS INNER JOIN TERCEIROS ON OCORRENCIAS.Pasta = TERCEIROS.Pasta) LEFT JOIN CUSTOS ON OCORRENCIAS.Pasta = CUSTOS.Pasta) LEFT JOIN COBRANCAS ON OCORRENCIAS.Pasta = COBRANCAS.Pasta
    GROUP BY OCORRENCIAS.Data, OCORRENCIAS.Pasta;

    O Problema é que ele multiplica o valor dos acordos pra cada ocorrência na tabela cobranças (por exemplo).

    Alguma dica pra resolver o problema?
    Finformática
    Finformática
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 598
    Registrado : 23/03/2010

    Select resumo em várias tabelas Empty Re: Select resumo em várias tabelas

    Mensagem  Finformática em 17/6/2020, 22:18

    Caro Amigo,

    Teste assim:

    SELECT Ocorrencias.Data, Ocorrencias.Pasta, Sum(Terceiros.Acordo) AS SomaDeAcordo, Sum(Custos.Valor) AS SomaDeValorCustos, Sum(Cobrancas.Valor) AS SomaDeValorCobrancas
    FROM Terceiros INNER JOIN (Custos INNER JOIN (Cobrancas INNER JOIN Ocorrencias ON Cobrancas.Pasta = Ocorrencias.Pasta) ON Custos.Pasta = Ocorrencias.Pasta) ON Terceiros.Pasta = Ocorrencias.Pasta
    GROUP BY Ocorrencias.Data, Ocorrencias.Pasta;


    Abraços
    Finformática
    Finformática
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 598
    Registrado : 23/03/2010

    Select resumo em várias tabelas Empty Re: Select resumo em várias tabelas

    Mensagem  Finformática em 17/6/2020, 23:52

    Amigo,

    Essas tabelas de Terceiros, Custos e Cobranças tem que ser deste modo? Não poderia ser tudo em uma mesma tabela?
    Ex.:

    TbGeral:

    Pasta
    ValorTerceiros
    ValorCustos
    ValorCobranca

    Fica mais enxuto, os valores ficam todos juntos, facilita o manuseio dos campos, facilita nos relacionamentos. O que você falou que os valores estão duplicados é por isso. É o relacionamento. A consulta faz o relacionamento basicamente 4 vezes, na 1ª tabela pega o valor da mesma, faz o mesmo na 2ª tabela e na 3ª tabela. Então soma, por exemplo, 20 + 20 + 20 + 20. Na realidade fica quatro vezes mais. Verifique o resultado do Select que você fez se não deu isso.
    Acho que o que mandei acima também vai ter o mesmo problema. Não testei. Só fiz a linha e depois é que notei esses relacionamentos.

    Veja aí.

    Abraços
    avatar
    castelhano.rafael
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 9
    Registrado : 03/05/2016

    Select resumo em várias tabelas Empty Re: Select resumo em várias tabelas

    Mensagem  castelhano.rafael em 18/6/2020, 11:53

    Olá Finformática, obrigado pelo retorno.

    Na verdade esse é um controle de acidentes, a tabela de ocorrências tem o registro básico do acidente, na tabela terceiros tem os registros de todos os terceiros envolvidos no acidente (no mesmo acidente pode envolver várias pessoas) na tabelas custos esta listado todos os custos de cada acidente (compra de remêdios, etc, cada acidente pode ter várias entradas para custo) e o mesmo vale para as cobranças, o mesmo acidente pode ser ressarcido de varias formas/fontes, a consulta que preciso lista apenas o resumo destes valores pra cada acidente
    avatar
    castelhano.rafael
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 9
    Registrado : 03/05/2016

    Select resumo em várias tabelas Empty Re: Select resumo em várias tabelas

    Mensagem  castelhano.rafael em 18/6/2020, 12:49

    Consegui resolver aqui, useu subquery, segue como ficou meu SQL:
    Código:
    SELECT  o.data, o.past,
           (SELECT sum(t.acordos) FROM terceiros t where t.pasta = o.pasta) as acordos,
           (SELECT sum(c.valor) FROM custos c where c.pasta = o.pasta) as custos,
           (SELECT sum(co.valor) FROM cobrancas co where co.pasta = o.pasta) as cobrancas
      FROM ocorrencias o

      Data/hora atual: 26/10/2020, 18:19