Select MAX - SQL

Opa! Beleza?

É o seguinte, criei uma busca em SQL que deveria me retornar o maior valor de um campo do tipo INT no MySQL. Dai fiz a seguinte instrução SQL utilizando preparedStatement:

int cont = 0;
try{
setSql("SELECT MAX(colunast) AS MAXCOL FROM Est WHERE est=?");
ps = conn.prepareStatement(getSql());
ps.setString(1, getEst());
rs = ps.executeQuery();
while(rs.next){
cont = rs.getInt("MAXCOL");
}
}
catch(SQLException ex){
ex.printStackTrace();
}

Na minha base de dados tenho em torno de 4.000 registros e no campo ‘colunast’ valores crescentes, iniciando de 1. Beleza, quando executo essa instrução, ele só me retorna o valor 9! Os valores acima de 9, existentes na tabela (10,11,12…20,21,22…30,31,32…etc) não são capturados… alguem sabe o que pode estar acontecendo?

Aew…
Cara eu acho que pode ser por causa desse WHERE est= ??
não?

Pq vc não usa um Order By Desc e depois pega o Top 1, já que não está dando certo…(não me recordo os comandos direitinho)…

Rpz acho que não, tipo, o est é para filtrar as estações… ou seja, dentro de cada estação eu tenho os valores de colunast.
Testei aqui duas situações:

  1. Estação com valor máximo de colunast = 8
  2. Estação com valor máximo de colunast = 11

Ocorre que quando o valor é igual a 8 ele exibe tranquilamente, executa a query blza. Porém quando busco a estação com colunast = 11, ele só me retorna 9 das 11…
Sacou o drama? :stuck_out_tongue:

Hmmm, boa idéia, vou tentar aqui e já posto o feedback :slight_smile:

Doideira…
Outro chute: a coluna colunast é mesmo INT? Se for char/varchar o max será o 9 mesmo.

Abrs,

é INT :slight_smile:

Deu certo o Order By Desc?

Se não der, a coluna não é int mesmo…

Mas deve dar certo…

Calma ai, to tentando! ehhehe
reiniciando tomcat, reiniciando bd p ver se funfa! por sinal… o mysql anda bem instável aqui…

AEEEEE Funcionou usando a lógico do maior número! hehehe a peleja nem foi tao grande :smiley:

int cont = 0;
try{
setSql("SELECT * FROM Est WHERE est=?");
ps = conn.prepareStatement(getSql());
ps.setString(1, getEst());
rs = ps.executeQuery();
while(rs.next()){
if(cont < rs.getInt("colunast"))
cont = rs.getInt("colunast");
}
}
catch(SQLException ex){
ex.printStackTrace();
}

seu select tava certo
a unica coisa errada é que vc botou
cont = rs.getInt(“MAXCOL”);
e pelo que vi MAXCOL era o alias da sua tabela e não o campo que vc tinha que pega o valor
ta certo o primeiro select la

Hummm como q eu iria obter o valor máximo então? Em que variável eu poderia armazenar para, por exemplo, trabalhr em cima de uma rotina de FOR ou WHILE?

Minha idéia era pegar o valor máximo, armazenar em uma variável e jogar num for: for(i=0;i<cont;i++)
Sacou? :stuck_out_tongue: