Ir para conteúdo
JulinhoooO

Problema ao selecionar valor minimo numa tabela

Recommended Posts

Estou tentando executar uma query para retornar pra mim qual o valor minimo de uma coluna:

SELECT MIN(nfatura) as nfatura_min FROM `financeiro` WHERE pedido = "857087" AND situacao = 'N';

O problema é que ela me retorna como menor valor 10

Spoiler

image.png.ebf03739acee371a98da987b29e46099.png

 

Só que esse não é o menor valor. Como podem ver no select abaixo, o menor valor pra essa coluna é 2 segundo as cláusulas que coloquei:

Spoiler

image.png.9b54174fccd5b368ba15e43a1f3ce8a4.png

Onde está o erro?

Compartilhar este post


Link para o post
Compartilhar em outros sites

erro nenhum, caso a coluna seja tipo string.

tente mudar p/ 1 tipo numerico, como int por exemplo

Compartilhar este post


Link para o post
Compartilhar em outros sites
11 minutos atrás, Fernando C disse:

erro nenhum, caso a coluna seja tipo string.

tente mudar p/ 1 tipo numerico, como int por exemplo

 

11 minutos atrás, Fernando C disse:

erro nenhum, caso a coluna seja tipo string.

tente mudar p/ 1 tipo numerico, como int por exemplo

SELECT nfatura FROM `financeiro` WHERE pedido = "857087" AND situacao = 'N' ORDER BY nfatura ASC LIMIT 1;

Compartilhar este post


Link para o post
Compartilhar em outros sites
8 horas atrás, Fernando C disse:

erro nenhum, caso a coluna seja tipo string.

tente mudar p/ 1 tipo numerico, como int por exemplo

Era esse mesmo o problema, estava como varchar o campo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma outra alternativa é somar com 0 (zero) o valor da coluna, assim o MySql faz o CAST automatico para INT. 

Assim não precisaria alterar o tipo do campo, que as vezes pode gerar impacto em outra parte do sistema.

Teste no Fiddle:

LInk Fiddle

CREATE TABLE Persons (
    PersonID varchar(255)
);

INSERT INTO Persons (PersonID) VALUES ('1'),('2222'),('3'),('4'),('5');

SELECT MAX(PersonID + 0) FROM Persons

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 10/08/2018 at 16:48, Uerlen Santos disse:

Uma outra alternativa é somar com 0 (zero) o valor da coluna, assim o MySql faz o CAST automatico para INT. 

Assim não precisaria alterar o tipo do campo, que as vezes pode gerar impacto em outra parte do sistema.

Teste no Fiddle:

LInk Fiddle


CREATE TABLE Persons (
    PersonID varchar(255)
);

INSERT INTO Persons (PersonID) VALUES ('1'),('2222'),('3'),('4'),('5');

SELECT MAX(PersonID + 0) FROM Persons

 

Muito obrigado pelo dica, bom saber disso, pode ser útil, mas nesse caso alterar o tipo do campo era a melhor solução mesmo, não utilizo em mais lugar nenhum os dados desse campo, somente nessa tabela mesmo. E como ela só pode receber número inteiros via verificação no script PHP não teria porque deixar o campo como varchar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Trabalhe com o tipo correto , evita complicações desnecessárias.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Adriano Weverton
      Necessito de ajuda em relação a como gerar um pdf pegando imagens do banco de dados utilizando a biblioteca fpdf e se for possível colocar um limite de resolução padrão.
    • Por andersonx
      Galera, estou desenvolvendo um sistema, e estou mexendo agora, na parte de recuperação de senha, segui um tutorial que achei bem interessante, no YT, fiz tudo que o cara fez, mas esta aparecendo um erro , na hora de enviar o email, usando um sistema de hospedagem externo, 
       
      Código para recuperação: 
       
      <head>
        <?php 
                date_default_timezone_get("America/Ponta_Pora");
              include "../includes/inc_head.php"; 
              include "../../helpers/conexao.php";  
            
              if(isset($_POST['acao']) && $_POST['']=='recuperar'):
                  $email = strip_tags(filter_input(INPUT_POST,'emailrecupera',FILTER_SANITIZE_STRING));
                  $verificar = mysqli_query($conexao,"SELECT email FROM educadores  WHERE email='$email'");
                  if(mysqli_num_rows($verificar==1)){
                      
                  $codigo = base64_encode($email);
                  $data_expirar= date('Y-m-d H:i:s', strtotime('+ 1 day'));
                  
                  $mensagem='<p>Recebemos uma tentativa de redefiniçao de senha  para esse email, causo não foi voce que enviou,'
                          . ' desconsidere esse email, caso  contrário clique no link abaixo <br /> '
                          . '<a href="nomedosite/recuperar_senha.php?codigo='. $codigo.'  ">Recuperar Senha </a>    </p>';
                  $email_remetente='andersonshipuden@gmail.com';
                  
                  
                  
                          $headers = "MINE-Version: 1.1\n";
                          $headers .= "Content-type: text/html; charset-iso-8859-1\n";
                          $headers .= "From: $email_remetente\n";
                          $headers .= "Return-Path: $email_remetente\n";
                          $headers .= "Reply-To: $email\n";
                          $inserir= mysqli_query($conexao,"INSERT INTO codigos  SET codigo='$codigo', data='$data_expirar'");
                         if($inserir){
                           if (mail("$email", "Assunto", "$mensagem", $headers, "-f$email_remetente")){
                            echo 'Enviamos um email com um link para a recuperaçao de senha para o endereço de e-mail, que enviou';
                            
                        
                             
                         }                    
                       }
                  
                  }
                  
                
                 
               
                  
                  endif;
              
         /*$headers = "MINE-Version: 1.1\n";
         $headers .= "Content-type: text/plain; charset-iso-8859-1\n";
         $headers .= "From: $email_remetente\n";
         $headers .= "Return-Path: $email_remetente\n";
         $headers .= "Reply-To: $email_usuario\n";
         mail("$email_usuario", "Assunto", "$mensagem", $headers, "-f$email_remetente");
         
              */
              
              ?>
         
             
             
              
              
              
             
      </head>
      <body  >
        <div class="container-fluid">
                  <?php include "../includes/inc_nav.php"; ?>
              </div>
          
         
          
          <div class="form-horizontal" id="img" >
            <div class="row">
                  
                   
                     
                       
                       <center>    <h4 id="tit"><strong>Recuperar Senha</strong></h4> </center>
                     
                       <form id="f"  class="form-horizontal" method="POST" enctype="multipart/form-data">
                    
                           
                          <img src="../img/logo.png" id="fff">
                         <br>
                         <br>
                         <br>
                          <br>
                           <br>
                         <br>
                         <center>    <h6 id="recs"><strong>Para recuperar sua  Senha inseira o seu Email Cadastrado!</strong></h6> </center>
                         <br>
               
                         
                        <div class="control-group">
                          <label class="control-label">Email:</label>
                          <div class="controls glyphicon glyphicon-envelope" >
                              <input type="text" name="emailrecupera" value="" class="form-control"  placeholder="Email" required>
                              <input type="hidden" name="acao" value="recuperar" class="form-control" required>
                               
                          </div>
                        </div>
                     
                     
                        <div class="control-group">
                          <div class="controls">
                              <button type="submit"  value="recuperar Senha" id="submit" class="btn-success" >Enviar</button>
                          </div>
                            <br>
                            <div class="controls" >
                                      <button type="reset"  id="reset" class="btn-warning">Limpar Campos</button>
                          </div>
                          
                        </div>
                           <br>
                         <br>
                         <br>
                          <p class="aligncenter margintop500" id="registrar" >
                            Nao Possui uma  conta? <a href="registrar.php"  aria-hidden="true" >Registre-se</a>
                          </p>
                          
                      </form>
                    </div>  
          </div>
       
      ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
      Essa é a segunda tela, quando ele clicar no codigo enviado por email par aele
      <head>
       

        <?php 
               
              include "../includes/inc_head.php"; 
              include "../../helpers/conexao.php";        
              
               if(isset($_GET['codigo'])){
                   $codigo= $_GET['codigo'];
                   $email_codigo= base64_decode($codigo);
                   $selecionar = mysqli_query($conexao,"SELECT * FROM codigos WHERE codigo = '$codigo' AND  data > NOW()");
                   if(mysqli_num_rows($selecionar)>=1){
                       if(isset($_POST['acao']) && $_POST['acao']=='mudar'){
                           $nova_senha= $_POST['novasenha'];
                           $atualizar= mysqli_query($conexao,"UPDATE educadores SET senha ='$nova_senha' WHERE email='$email_codigo'");
                           if($atualizar){
                               $mudar= mysqli_query($conexao,"DELET FROM codigos WHERE codigo='$codigo'");
                                    
                               echo 'Sua senha foi modificada com sucesso';
                           }
                       }
             ?>
          
          <div class="row">
                  
                   
                     
                       
                       <center>    <h4 id="tit"><strong>Por Favor, insira a sua  nova senha:</strong></h4> </center>
                       <form id="f"  class="form-horizontal" method="POST" enctype="multipart/form-data">
                    
                           
                          <img src="../img/logo.png" id="fff">
                         <br>
                         <br>
                         <br>
                          <br>
                           <br>
                         <br>
                         <center>    <h6 id="recs"><strong>Para atualizar sua  Senha insira sua nova senha no campo abaixo!</strong></h6> </center>
                         <br>
               
                        <div class="control-group">
                          <label class="control-label">Nova Senha:</label>
                          <div class="controls glyphicon glyphicon-envelope" >
                              <input type="password" name="novasenha" value="" class="form-control"  placeholder="Nova Senha" required>
                              <input type="hidden" name="acao" value="mudar" class="form-control" required>
                               
                          </div>
                        </div>
                     
                     
                        <div class="control-group">
                          <div class="controls">
                              <button type="submit"  value="Mudar Senha" id="submit" class="btn-success" >Salvar Senha</button>
                          </div>
                            <br>
                            <div class="controls" >
                                      <button type="reset"  id="reset" class="btn-warning">Limpar Campos</button>
                          </div>
                          
                        </div>
                           <br>
                         <br>
                         <br>
                          
                      </form>
                    </div>  
          
          
          
          <?php 
                       
                   }else {
                       echo 'Desculpe mais esse link já expirou';
                       
                   }
                   
               }
                  
                ?>  
        
              
         Esta dando um erro, na seguinte linha :    if(mysqli_num_rows($verificar==1))
       
      esse erro: 
       
      Notice: Object of class mysqli_result could not be converted to int in /storage/ssd4/199/6565199/public_html/EducAtiv/view/home/recuperarSenha.php on line 14

      Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in /storage/ssd4/199/6565199/public_html/EducAtiv/view/home/recuperarSenha.php on line 14
       
             
             
              
          
    • Por BryanSamuel
      Eu preciso somar a coluna SOMA onde a coluna A e a coluna B(ao outro registro, por exemplo A do registro 1 e A do registro 2 forem iguais) forem iguais, após isso dividir por 3 e em seguida inserir em outra tabela.
    • Por Pedroalves
      eu estou a tentar a criar um sistema que gera recursos aos jogadores como acontece com os jogos online tipo ogame ou ikaria eu quero
      por exemplo a mina esta a nivel 1 produz 20 unidades a hora a
      nivel 2 produz 32 unidades a hora socidamente eu em php tentei server loop push mas em
      nodejs não sei por onde começar
      estou a usar o nodejs e express com mysq
    • Por ayrtonmaia25
      Colegas, alguns anos atrás iniciei estudos no desenvolvimento web, porém com as circunstancias da vida, o tempo foi passando e a web foi ficando de lado, consequentemente, meus conhecimentos ficaram ultrapassados e me desliguei da área. Estou retornando agora e novamente estudando, em busca de me atualizar e já desenvolvendo um sistema, o cliente me enviou a estrutura do banco de dados dele, porém um arquivo extenso e estou tentando subir para o servidor ainda, porém há uma dificuldade, aparentemente a estrutura foi salva em php e não estou conseguindo achar uma forma para inseri-la no bd do jeito que está, alguém poderia me dar uma luz?
       
      Segue um exemplo de como está a estrutura:
      IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[apostas]') AND type IN ('U')) DROP TABLE [dbo].[apostas] GO $sql = "CREATE TABLE [dbo].[apostas] ( [idaposta] int IDENTITY(1,1) NOT NULL, [idconcurso] int NULL, [datahora] datetime NULL, [telefone] varchar(20) COLLATE Latin1_General_CI_AS NULL, [nome] varchar(30) COLLATE Latin1_General_CI_AS NULL, [numeros] varchar(150) COLLATE Latin1_General_CI_AS NULL, [cotacao] int NULL, [valor] money NULL, [premio] money NULL, [idcliente] int NULL, [acertou] bit DEFAULT ((0)) NULL, [COMISSAO] money NULL, [CODIGO] char(7) COLLATE Latin1_General_CI_AS NULL, [bilhete] char(10) COLLATE Latin1_General_CI_AS NULL, [PG] char(1) COLLATE Latin1_General_CI_AS DEFAULT ('N') NULL, [nomecolab] varchar(30) COLLATE Latin1_General_CI_AS NULL, [dataconcurso] varchar(10) COLLATE Latin1_General_CI_AS NULL, [confirmado] bit NULL, [bilhete2] uniqueidentifier NULL, [idterminal] varchar(11) COLLATE Latin1_General_CI_AS NULL, [tipo] char(1) COLLATE Latin1_General_CI_AS DEFAULT ('S') NULL ) GO ALTER TABLE [dbo].[apostas] SET (LOCK_ESCALATION = TABLE) GO Quebrei a cabeça durante o dia quase todo, estou no meio dos estudos também, atualizando sobre PDO e Frameworks, etc... Se alguém puder dar uma luz do que fazer, agradeço
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.