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

    [Resolvido]Retornar dados de três tabelas

    avatar
    leo.gool
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 42
    Registrado : 27/02/2018

    [Resolvido]Retornar dados de três tabelas Empty [Resolvido]Retornar dados de três tabelas

    Mensagem  leo.gool em 24/9/2018, 15:49

    Olá, eu preciso de um relatório que contemple dados de três tabelas, eu possuo a tabela abastecimento, manutenção e eventos(saídas), eu preciso de um relatório que mostre valor gasto com combustível, gasto com manutenção, km percorridos, agrupados por mês, exemplo:

    mes           gasto_Combustível       gastoManutenção          kmPercorridos
    1                       1000                            450                             9000
    2                       1500                           300                             8000
    3                         ...                               ...                              ...
    4                         ...                               ...                              ...
    5                         ...                               ...                              ...
    6                         ...                               ...                              ...
    ...                         ...                               ...                              ...

    para isso eu criei uma consulta sql, mas ela me retorna várias linhas e não agrupa por mês, se alguém puder me dar uma força com o código da consulta sql eu agradeço, segue abaixo o código

    Código:
    SELECT
          e.[Km Chegada],
          e.[Km Saída],
          e.[Data Saída],
          e.[Data Chegada],
          e.[Situação Saída],
          e.ID_eventos,
          e.tipoSaida
    FROM  ((Eventos AS e
          LEFT JOIN (SELECT month(dataAbastecimento) as mesA , sum(qtd) as quantidadeComb, SUM(valTotal) AS gastoCombustivel, count(Identificação1) as totalAbastecimentos from Abastecimento group by month(dataAbastecimento)) As a on month(e.[Data Saída]) = a.mesA)
          LEFT JOIN (SELECT month(dataManu) as mesM , sum(valorManu) as gastoManu, count(chaveManu) as totalManutencoes from Manutenção group by month(dataManu) ) As m on month(e.[Data Saída]) = m.mesM)
          GROUP BY e.[Km Saída],e.[Km Chegada],e.[Data Saída],e.[Data Chegada],e.[Situação Saída],e.ID_eventos,e.tipoSaida,a.mesA,a.quantidadeComb,a.gastoCombustivel,a.totalAbastecimentos,m.mesM,m.gastoManu,m.totalManutencoes;
    good guy
    good guy
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1304
    Registrado : 05/02/2010

    [Resolvido]Retornar dados de três tabelas Empty Retornar dados de três tabelas

    Mensagem  good guy em 25/9/2018, 15:51

    Olá leo,

    Se você postar um exemplo ou todo aplicativo vai ficar mais fácil de trazer uma solução.
    avatar
    leo.gool
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 42
    Registrado : 27/02/2018

    [Resolvido]Retornar dados de três tabelas Empty Re: [Resolvido]Retornar dados de três tabelas

    Mensagem  leo.gool em 26/9/2018, 14:41

    Olá, criei o modelo de exemplo, que é exatamente como eu preciso e repare que a consulta duplica os dados de mês, e que eles não ficam agrupados, eu acredito que a instrução está errada, tentei fazer um inner join mas não deu certo, quando vou salvar aparece a mensagem "Erro de sintaxe (operador faltando) na expressão de consulta m.MesM = e.mesE ...", segue o código em anexo

    Código:
    SELECT
     SUM(e.[Km Chegada]) - SUM(e.[Km Saída]) as kmPercorrido,
     format(month(e.[Data Saída]),"General Number") as mesE,
     count(e.ID_eventos) as qtdAtendimentos,
     e.tipoSaida,
     e.[Situação Saída],
     format(month(a.dataAbastecimento),"General Number") as mesA,
     sum(a.qtd) as quantidadeComb,
     SUM(a.valTotal) AS gastoCombustivel,
     count(a.Identificação1) as totalAbastecimentos,
     format(month(m.dataManu),"General Number") as mesM,
     sum(m.valorManu) as gastoManu,
     count(m.chaveManu) as totalManutencoes
    FROM   Eventos e
    inner join Manutenção m on m.mesM = e.mesE
    inner join Abastecimento a on a.mesA = e.mesE
    GROUP BY e.mesE,e.kmPercorrido,e.qtdAtendimentos,e.tipoSaida,e.[Situação Saída],a.mesA,a.quantidadeComb,a.gastoCombustivel,a.totalAbastecimentos,.m.mesM,m.gastoManu,m.totalManutencoes;
    Anexos
    [Resolvido]Retornar dados de três tabelas Attachmentexemplo.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (242 Kb) Baixado 4 vez(es)
    avatar
    leo.gool
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 42
    Registrado : 27/02/2018

    [Resolvido]Retornar dados de três tabelas Empty Re: [Resolvido]Retornar dados de três tabelas

    Mensagem  leo.gool em 27/9/2018, 14:57

    Olá amigos, consegui resolver o problema, o problema estava na parte de ordem do agrupamento, envio para quem tiver dúvida similar o código, agradeço a disposição de todos

    Código:
    SELECT
          sum(e.[Km Chegada])-sum(e.[Km Saída]) as kmPercorrido,
          month(e.[Data Saída]) as mesE,
          year(e.[Data Saída]) as anoE,
          count(e.ID_eventos) as quantidadeAtendimentos,
          a.quantidadeComb,
          a.mesA,
          a.anoA,
          a.gastoCombustivel,
          a.totalAbastecimentos,
          m.mesM,
          m.anoM,
          m.gastoManu,
          m.totalManutencoes
    FROM  ((Eventos AS e
          LEFT JOIN (SELECT month(dataAbastecimento) as mesA , year(dataAbastecimento) as anoA, sum(qtd) as quantidadeComb, SUM(valTotal) AS gastoCombustivel, count(Identificação1) as totalAbastecimentos from Abastecimento group by month(dataAbastecimento),year(dataAbastecimento)) As a on month(e.[Data Saída]) = a.mesA)
          LEFT JOIN (SELECT month(dataManu) as mesM , year(dataManu) as anoM, sum(valorManu) as gastoManu, count(chaveManu) as totalManutencoes from Manutenção group by month(dataManu),year(dataManu) ) As m on month(e.[Data Saída]) = m.mesM)
     where year([Data Saída]) = 2018 and [Situação Saída] = "FINALIZADA"
          GROUP BY a.mesA,m.mesM,month([Data Saída]),a.anoA,m.anoM,year([Data Saída]),a.quantidadeComb,a.gastoCombustivel,a.totalAbastecimentos,m.gastoManu,m.totalManutencoes;
    avatar
    leo.gool
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 42
    Registrado : 27/02/2018

    [Resolvido]Retornar dados de três tabelas Empty Re: [Resolvido]Retornar dados de três tabelas

    Mensagem  leo.gool em 27/9/2018, 15:01

    Apenas para marcar o tópico como resolvido Very Happy Very Happy

      Data/hora atual: 27/10/2020, 07:05