Jump to content
Julio Cavallari

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?

Share this post


Link to post
Share on other sites

erro nenhum, caso a coluna seja tipo string.

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

Share this post


Link to post
Share on other 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;

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

 

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other sites

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

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 guzulino
      Então... eu preciso inserir uma paulada de dados em um banco de dados de vez em quando, eu até consigo importar de um CSV pro banco, mas eu preciso fazer isso através do php e eu não tenho nem ideia de como fazer isso, procurei por aqui e não achei, se alguém tem alguma resposta ou referência, manda o link que eu vou dar uma olhada. Valeu.
    • By DouglasVitor
      Boa tarde,
      Estou a pelo menos 3 semanas tentando instalar o MySQL Server no Windows 10 Pro, mas sem sucesso.
      Baixo o instalador mas no momento de obstar o MySQL Server, apresenta uma mensagem de falha. Tentei a versão mais nova e antiga, mas a falha e a mesma. Alguém poderia me ajudar com este problema? É necessário alguma configuração no Windows?
      Desde já agradeço.
    • By Dani_Ambrosio
      Preciso criar uma coluna em uma tabela já existente, porém os dados dessa nova coluna vão depender de outra tabela
      Ex:
      tenho a tabela faturamento e nela eu preciso criar uma nova coluna que vai chamar fat_removido e os dados dessa coluna vão depender de uma outra tabela que se chama Faturamento removido.
      tanto as tabelas faturamento e a faturamento removido tem o ID_faturamento, quando o mesmo constar nas duas tabelas a nova coluna deverá ser preenchida com Sim e quando não constar deve ser preenchida com Não 
      Como faço isso?
    • By Bruno - BuhDesign
      Bom dia pessoal.
      Bom, estou trabalhando no banco de dados MySQL de um cliente, onde ele salva o curso da seguinte forma:
       
      NOME DO CURSO || LONDRINA - PR
      NOME DO CURSO || CURITIBA - PR
       
      Eu preciso fazer uma contagem, por curso, independente da cidade. Ou seja, se eu fizer um GROUP BY ele não
      vai juntar LONDRINA e CURITIBA. Como posso contornar esta divergência?  Teria uma forma de agrupar, até encontrar
      o carácter || ou agrupar por "semelhantes"?
      De fato, LONDRINA e CURITIBA possuem o mesmo curso e precisavam aparecer na mesma contagem. 
      Muito obrigado desde já.
    • By JenneferBarbosa
      Pessoal, sou nova aqui no Fórum e estou começando a estudar PHP. Estou com dúvidas quanto a pesquisa com vários campos, consegui fazer para um campo só, porém quando tento para vários campos não funciona. Fiz algumas pesquisas e só consegui achar buscas com 'selects e options' e eu queria que ele pegasse o que foi digitado no input e fizesse a busca, mas o usuário não precisaria informar todos os campos (se não quisesse). Quando clico em 'Pesquisar' aparece todos os dados do banco. E uma outra dúvida, como faz para que os dados pesquisados sejam exibidos na mesma tela (abaixo do formulário de pesquisa)
      <form method="POST" id="form-pesquisa" action="busca.php"> Livro: <input type="text" name="nome" id="nome" placeholder="Fulano de Tal"> Autor: <input type="text" name="autor" id="autor" placeholder="Fulano de Tal"> Edicao: <input type="text" name="edicao" id="edicao" placeholder="Fulano de Tal"> <input type="submit" name="enviar" value="Pesquisar"> </form> <ul class="resultado"></ul> $nome = $_POST['nome']; $autor = $_POST['autor']; $edicao = $_POST['edicao']; //Pesquisar no banco de dados nome do livro referente a palavra digitada pelo usuário $livros = "SELECT * FROM livro WHERE nome OR autor OR edicao ORDER BY nome ASC"; $resultado_livros = mysqli_query($conn, $livros); if (mysqli_num_rows($resultado_livros) <= 0) { echo "Nenhum livro encontrado..."; } else { while ($rows = mysqli_fetch_assoc($resultado_livros)) { echo "<li>" . $rows['codigo'] . "</li>"; echo "<li>" . $rows['nome'] . "</li>"; echo "<li>" . $rows['autor'] . "</li>"; echo "<li>" . $rows['edicao'] . "</li>"; } } . Como se ele fizesse a busca internamente e mostrasse ao usuário o que ele pesquisou sem ele sair da tela em que está o form
×

Important Information

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