Jump to content
Gemeons

Como otimizar essa query?

Recommended Posts



  SELECT 
  tabehist.HIST_Descricao,
  `vw_saldobancario`.`codigoHistorico`,
  (SELECT 
    SUM(debitos + debitosPendentes) 
  FROM
    vw_saldobancario 
  WHERE mes = '1' 
    AND `conta_bancaria_id` = '3' 
    AND vw_saldobancario.codigoHistorico = tabehist.HIST_Codigo) AS 'mes1',
  `vw_saldobancario`.`conta_bancaria_id` 
FROM
  vw_saldobancario 
  INNER JOIN tabehist 
    ON vw_saldobancario.codigoHistoricod = tabehist.HIST_Codigo 
    AND `ano` = '2018' 
    AND `conta_bancaria_id` = '3' 
    AND codigoHistorico < 500 
GROUP BY codigoHistorico

 

A query e montada a partir dessa função aonde contem um for que vai montando o meses partir do que o usuário pede .

 

{
    $dataInicio = (int)$dataInicio;

       $i = 0;    

             $query =  "SELECT tabehist.HIST_Descricao,
                     `vw_saldobancario`.`codigoHistorico`, ";

                       for ($i = $dataInicio ; $i <= $dataFim; $i++) {
                          $query = $query. "(SELECT SUM(debitos + debitosPendentes) FROM vw_saldobancario
                              WHERE mes = '{$i}' AND `conta_bancaria_id` = '{$contaBancaria}' AND vw_saldobancario.codigoHistorico = tabehist.HIST_Codigo) AS 'mes{$i}',";

                        }

             $query = $query. " 
                     `vw_saldobancario`.`conta_bancaria_id` 
                      FROM vw_saldobancario

                        INNER JOIN tabehist
                        ON vw_saldobancario.codigoHistorico = tabehist.HIST_Codigo

                                AND `ano` = '{$ano}'
                                  AND `conta_bancaria_id` = '{$contaBancaria}'
                                    AND codigoHistorico < 500
                                      GROUP BY codigoHistorico ";

            return $this->db->query($query)->result();

}

 

Share this post


Link to post
Share on other sites

Publique a estrutura da tabela , exemplo dos dados e resultado esperado.

 

 

Share this post


Link to post
Share on other sites
Em 17/11/2018 at 12:46, Motta disse:

Publique a estrutura da tabela , exemplo dos dados e resultado esperado.

 

 

O resultado esperado vem assim

image.thumb.png.6f04519df9a7ed296a8e06360d3e2b78.png

 

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By mzaidan
      Pessoal, estou meio enferrujado, voltando depois de alguns anos sem mexer em nada.
      Queria uma pequena ajuda, se possível.
       
      Seguinte:
      Tenho uma tabela com nome e faixa do cara (jiu jitsu).
      Por exemplo:
      Nome     | Faixa
      AlunoA   | branca
      AlunoB   | branca
      AlunoC   | azul
      AlunoD   | azul
      AlunoE   | marrom
      AlunoF   | roxa
      AlunoG   | preta
       
      Queria fazer um sql (na verdade vou usar em php), que me retornasse assim:
       
      Faixa Branca:
      AlunoA
      AlunoB
      Faixa Azul:
      AlunoC
      AlunoD
      Faixa Roxa:
      AlunoF
      Faixa Marrom:
      AlunoE
      Faixa Preta:
      AlunoG
       
      O que eu poderia fazer??
       
      Desde já agradeço.
    • By djwagnersp
      Bom dia amigos, tudo bem? estou com uma duvida se alguém puder me ajudar agradeço desde já.
       
      tenha a seguinte condição:
      //array dos produtos $prod = 'agua'; $prod = 'refri'; $prod = 'cerveja'; //array das quantidades $qtd = '3'; $qtd = '2'; $qtd = '6'; Gostaria de fazer um loop o for ou foreach que imprimisse o $prod a quantidade de vezes do $qtd
      como seria possível realizar isso?
    • By tiago.rizzon
      Boa tarde pessoal!
      Alguém poderia me dizer oq está errado na minha primeira tentativa de conectar com DB mysql?
      Em anexo coloquei print do erro no browser e print dos dados de acesso ao banco.
      Meu usuário é megasys.com, o nome do DB q quero acessar é CL001... q contem uma tabela teste FUN...
      Desde já agradeço!!
      Obrigado!
       
      meu index.php está assim:
       
      <!DOCTYPE html>
      <html>
      <body>
      <?php
      $link = mysql_connect('mysql22.redehost.com.br,3306', 'megasys.com', 'minhaSenha');
      if (!$link) {
          die('Não foi possível estabelecer uma conexão com o MySQL : ' . mysql_error());
      }
      $db_selected = mysql_select_db('CL001', $link);
      if (!$db_selected) {
          die ('Não foi possivel acessar o banco de dados: ' . mysql_error());
      }
      ?>
      </body>
      </html>


    • By Cascais51
      Olá, pessoal!
      Tenho um banco de dados com 111 tabelas de um sistema de gestão feito para um cliente. Acontece que agora quero transformar esse sistemas em SaaS, Quero manter ele com a mesma base, apenas incluindo uma tabela "licencas" onde terei o cadastro de meus clientes na modalidade SaaS com as configurações necessárias e possíveis ligações com tabelas de mensalidades e etc.
      Pois bem, para não fazer grandes alterações nesse sistema, adicionei uma coluna de nome "licenca" em cada uma das 111 tabelas e fiz uma chave estrangeira em cada uma ligando a chave primária da tabela "licencas" (id_licenca).
      A ideia é com mais tempo organizar para apenas as tabelas chaves terem essa ligação com a tabela licencas, mas por enquanto tenho pouco tempo, mas gostaria de saber de vocês se ter essa coluna "licenca"  em todos as tabelas ligando a tabela licenças vai ser muito custoso em processamento para meu banco de dados, ou é indiferente?

      Acham que eu deveria deixar o campo sem chave estrangeira?
       
      Enviei a imagem com o diagrama de apenas 5 tabelas para ilustrar. são muitas tabelas para enviar todas.

    • By Leonardo Ortega
      Prezados, bom dia.
      sou novo por aqui, e me deparei com esta situação:
      estou desenvolvendo um projeto e tudo começou quando apenas mudei o banco de dados que estava conectado. Ou seja, se eu me conecto ao baco de dados anterior, volta todo código html, porém, se conecto ao banco de dados atual as divs desaparecem. 
       
      obs: Isso tb acontece quando eu desativo o php tudo volta como a imagem 1 e se eu ativo fica como a imagem2.
       
      quem pode me ajudar.. desde já muito obrigado.  


×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.