É 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:
intcont=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(SQLExceptionex){
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?
claudneto
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)…
S
skabryanty
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:
Estação com valor máximo de colunast = 8
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?
S
skabryanty
Hmmm, boa idéia, vou tentar aqui e já posto o feedback
christo
Doideira…
Outro chute: a coluna colunast é mesmo INT? Se for char/varchar o max será o 9 mesmo.
Abrs,
S
skabryanty
é INT
claudneto
Deu certo o Order By Desc?
Se não der, a coluna não é int mesmo…
Mas deve dar certo…
S
skabryanty
Calma ai, to tentando! ehhehe
reiniciando tomcat, reiniciando bd p ver se funfa! por sinal… o mysql anda bem instável aqui…
S
skabryanty
AEEEEE Funcionou usando a lógico do maior número! hehehe a peleja nem foi tao grande
intcont=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(SQLExceptionex){ex.printStackTrace();}
marcosharbs
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
S
skabryanty
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?