Jump to content
alextds

como faço para trazer a última data sendo também a mais próxima de outra data sql

Recommended Posts

Tenho as seguintes tabelas com os dados:

    table_ent                                            |   table_out
    cod_prod   date_ent     vl_prod       |   cod_prod   date_out       vl_prod  
    362        14/09/2015   100,00         |   362        01/10/2016     700,00
    362        15/09/2015   150,00         |   362        07/10/2016     800,00
    362        16/09/2015   10,00           |   362        29/10/2016     100,00
    362        05/10/2016   20,00           |   362        01/10/2016     800,00       
    362        06/10/2016   300,00         |
    362        07/10/2016   460,00         |
    362        08/10/2016   510,00         |
    362        23/10/2016   620,00         |
    362        24/10/2016   750,00         |
    362        25/10/2016   810,00         |
    362        30/10/2019   920,00         |

 

 

Usei um inner join com max(date)  porém o resultado gerado foi esse :

    cod_ent  date_out   vl_ent      cod_ent  vl_ent  date_ent
    ------          --------         ------            ---          ---          -------
    362         01/10/16    700         362       100      14/09/15
    362         01/10/16    800         362       10      16/09/15
    362         01/10/16    700         362       150      15/09/15
    362         01/10/16    700         362       10      16/09/15
    362         01/10/16    800         362       150      15/09/15
    362         01/10/16    800         362       100      14/09/15
    362         07/10/16    100         362       20      05/10/16
    362         07/10/16    100         362       300      06/10/16
    362         07/10/16    100         362       100      14/09/15
    362         07/10/16    100         362      10      16/09/15
    362         07/10/16    100         362      150      15/09/15
    362         29/10/16    920         362      510      08/10/16
    362         29/10/16    920         362      750      24/10/16
    362         29/10/16    920         362      460      07/10/16
    362         29/10/16    920         362      10      16/09/15

 

Preciso obter este resultado abaixo :

    cod_ent  date_out   vl_ent   cod_ent  vl_ent  date_ent
    ------   --------   ------   ---      ---     -------
    362         01/10/16    700         362      100      14/09/15
    362         01/10/16    800         362      10      16/09/15
    362         07/10/16    100         362      20      06/10/16
    362         29/10/16    920         362      750      25/10/16

 

estou usando o seguinte script:

select a.cod_prod, a.date_out, a.vl_prod, sum(b.cod_prod) as cod_prod, sum(b.vl_prod) vl_prod, max(b.date_ent) as date_ent
from table_out a
join table_ent b on b.cod_prod = a.cod_prod and b.date_ent < a.date_out
group by a.cod_prod, a.date_out, b.cod_prod, a.vl_prod, b.vl_prod
order by a.cod_prod, a.date_out;

Share this post


Link to post
Share on other sites

Não entendi a lógica da saída.

Alinha pela data mais próxima ?

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 marlone
      Preciso fazer uma consulta no banco onde eu pego total gasto por CPF, somando cada row que for do mesmo CPF por exemplo:
       
       
      Cpf    ctro    vlr               vlrtotal
      158   166     1000         5000
      158   156     1000         5000
      158   1644   3000        5000
       
      159   168     2000         6000
      159   154     2000         6000
      159   111     2000         6000
       
      É possível?
    • By RafaGomes
      Boa tarde, seria possível realizar uma consulta da seguinte forma:
      SELECT * FROM CARGA WHERE (CASE WHEN :VARIAVEL = 2 THEN ('2', '7') WHEN :VARIAVEL = 3 THEN ('3', '9', '10') WHEN :VARIAVEL = 4 THEN '4' WHEN :VARIAVEL = 5 THEN '5' WHEN :VARIAVEL = 6 THEN '6' END) IN AD_DIAENTREGA;  
    • By lucascientista
      Boa noite, galera é o seguinte eu estou montando um script que pesquisa no banco de dados e mostrar os resultados em uma página php, bem aí que está o problema eu pesquisei alguns sistemas de paginação e de pesquisa e acabei montando meu script, no meu script a pesquisa aparece na primeira página mas quando passo para a página adiante não me é mostrado resultado nenhum já verifiquei tudo e não consigo encontrar o erro, será que alguém pode me ajudar?
       
      <?php #Incluindo a conexão no banco de dados require_once '../dao/conexao/Conexao.php'; $conexao = Conexao::getInstance(); /***********************************************/ #Aqui começa a parte a paginação e pesquisa /**********************************************/ #Limitando o número máximo de resultados que serão mostrados na tela $maximo = 1; #Armazenando o valor da página atual $pagina = isset($_GET["pagina"])? ($_GET["pagina"]): '1'; #Subtraindo 1, porque os registro começam do zero como em um array $inicio = $pagina - 1; #Multiplicamos a quantidade de registros da pagina pelo valor da pagina atual $inicio = $maximo * $inicio; #Agora chega a parte em que fazemos o SELECT para contar os resultados $sql = "SELECT * FROM centroautomotivo"; $stmt = $conexao->prepare($sql); $stmt->execute(); $contagem = $stmt->fetchAll(PDO::FETCH_ASSOC); $total = 0; if(count($contagem)){ foreach ($contagem as $linhas) { #Armazenando o total de registros da tabela para fazer a paginação $total = count($contagem); } } /******************************************************************* * Aqui vai começar a parte da pesquisa, tornando o script em um só ********************************************************************/ #Recebe o termo da pesquisa se existir $termo = (isset($_GET["termo"])) ? ($_GET["termo"]) : ''; #Executa uma pesquisa com o termo pesquisado como parametro - Este SELECT irá servir também para a paginação if(empty($termo)){ //Nada aqui } else{ $sql = "SELECT * FROM centroautomotivo WHERE nomefantasia LIKE :nomefantasia or email LIKE :email ORDER BY idCentro LIMIT $inicio,$maximo"; $stm = $conexao->prepare($sql); $stm->bindValue(':nomefantasia', '%'.$termo.'%'); $stm->bindValue(':email', '%'.$termo.'%'); $stm->execute(); $autocenters = $stm->fetchAll(PDO::FETCH_ASSOC); } <?php require_once '../includes/header.php'; require_once '../controller/paginacaoPesquisaCentro.php'; ?> <div class="container mb-5"> <h1 class="text text-center">Centros Automotivos</h1> <p class="text text-center">Encontre o centro automotivo que mais se encaixa com você</p> <!--Formulário de pesquisa com paginação--> <form method="GET" action=""> <div class="d-flex flex-column bd-highlight mb-3"> <div class="p-2 bd-highlight"><img src="../img/Logotipo.png" class=" img-fluid rounded mx-auto d-block"></div> <div class="p-2 bd-highlight d-flex justify-content-center" style="margin-top: -10px;"><input type="text" name="termo" class="form-control" style=" width: 60%;" placeholder="Pesquise pelo Centro Automotivo!"/></div> <div class="p-2 bd-highlight d-flex justify-content-center"><button type="submit" class="btn btn-outline-primary"><i class="fas fa-search"></i>&nbsp;Pesquisar</button></div> </div> </form> <!--Fim do formuláio de pesquisa--> <!--Início dos resultados da pesquisa--> <?php if(!empty($autocenters)){?> <?php foreach ($autocenters as $autocenter) { ?> <center> <div class="card mb-3" style="max-width: 540px;"> <div class="row no-gutters"> <div class="col-md-4"> <img src="../controller<?php empty($autocenter["foto"])? 'images/pic.png' : $autocenter["foto"] ?>" class="card-img img-fluid" width="150px" height="150px"> </div> <div class="col-md-8"> <div class="card-body"> <p class="card-text text-justify"><?php $autocenter["nomefantasia"]?></p> <p class="card-text text-justify"><small class="text-muted"><?=$autocenter["email"]?></small></p> </div> </div> </div> </div> </center> <?php }//Fechamento do foreach?> <div id="alignpaginacao"> <?php //determina de quantos em quantos links serão adicionados e removidos $max_links = 6; //dados para os botões $previous = $pagina - 1; $next = $pagina + 1; //usa uma funcção "ceil" para arrendondar o numero pra cima, ex 1,01 será 2 $pgs = ceil($total / $maximo); //se a tabela não for vazia, adiciona os botões if($pgs > 1 ){ echo "<br/>"; //botao anterior if($previous > 0){ echo "<div id='botaoanterior'><a href=".$_SERVER['PHP_SELF']."?termo={$termo}?pagina=$previous><input type='submit' name='bt-enviar' id='bt-enviar' value='Anterior' class='button' /></a></div>"; } else{ echo "<div id='botaoanteriorDis'><a href=".$_SERVER['PHP_SELF']."?pagina=$previous><input type='submit' name='bt-enviar' id='bt-enviar' value='Anterior' class='button' disabled='disabled'/></a></div>"; } echo "<div id='numpaginacao'>"; for($i=$pagina-$max_links; $i <= $pgs-1; $i++) { if ($i <= 0){ //enquanto for negativo, não faz nada }else{ //senão adiciona os links para outra pagina if($i != $pagina){ if($i == $pgs){ //se for o final da pagina, coloca tres pontinhos echo "<a href=".$_SERVER['PHP_SELF']."?pagina=".($i).">$i</a> ..."; }else{ echo "<a href=".$_SERVER['PHP_SELF']."?pagina=".($i).">$i</a>"; } } else{ if($i == $pgs){ //se for o final da pagina, coloca tres pontinhos echo "<span class='current'> ".$i."</span> ..."; }else{ echo "<span class='current'> ".$i."</span>"; } } } } echo "</div>"; //botao proximo if($next <= $pgs){ echo " <div id='botaoprox'><a href=".$_SERVER['PHP_SELF']."?termo={$termo}?pagina=$next><input type='submit' name='bt-enviar' id='bt-enviar' value='Proxima' class='button'/></a></div>"; }else{ echo " <div id='botaoproxDis'><a href=".$_SERVER['PHP_SELF']."?pagina=$next><input type='submit' name='bt-enviar' id='bt-enviar' value='Proxima' class='button' disabled='disabled'/></a></div>"; } } ?> </div> <?php }//Fechamento do if?> <!--Fim dos resultados da pesquisa--> <!--Início da paginação--> <!--Fim da paginação--> </div> <?php require_once '../includes/footer.php'; ?>  
      Bem aí está meu código, fico muito agradecido se puderem me ajudar.
    • By luisfeliperm2
      PHP Exibe mensagem Warning mesmo tratando exceção, como impedir isto ? Na mensagem é exibida o usuário e senha do meu banco de dados
      Observe: Não quero desativar as mensagens de Warning na configuração do PHP. Quero apenas impedir que não seja mostrado essa mensagem na função de conexão com a DB


    • By tondovale12
      Já resolvi o problema. Obrigado.
      Não vi uma opção de excluir o tópico, então editei antes de ser aprovado.
×

Important Information

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