Tenho que selecionar os 3 maiores valores de uma linha…
ex:
vot1/vot2/vot3/vot4/vot5
1/2/3/4/5
para aparecer:
vot5/vot4/vot3
5/4/3
tem algum comando no mysql que resolva isso ?? Ou tenho que verificar usando codigos no netbeans mesmo ?? :?
Tenho que selecionar os 3 maiores valores de uma linha…
ex:
vot1/vot2/vot3/vot4/vot5
1/2/3/4/5
para aparecer:
vot5/vot4/vot3
5/4/3
tem algum comando no mysql que resolva isso ?? Ou tenho que verificar usando codigos no netbeans mesmo ?? :?
Oi,
como assim uma linha ? O que seria essa linha, um registro no banco de dados ? Campos de uma tabela?
Não compreendi sua necessidade 
Registros…
Pois só consegui usar o MAX() nos Campos…
Preciso selecionar os registros pela chave primaria e verificar quais valores são maiores.
“SELECT * FROM votacao WHERE cod = 1” (exemplo)
só que nessa consulta quero apenas os 3 maiores valores dos registros dessa chave primaria.
select *
from tabela
order by campo1 desc
limit 0,3
mas isso vai ordenar um campo…
eu quero que ordene uma linha…
ex: a chave primaria 1 tem 5 campos 1,2,3,4,5
então eu quero q selecione os 3 maiores…
Dá para fazer algo assim
select
id,
case when campo1 > campo2 and campo1 > campo3 and campo1 > campo4 and campo1 > campo5 then campo1
when campo2 > campo3 and campo2 > campo4 and campo2 > campo5 then campo2
when campo3 > campo4 and campo3 > campo5 then campo3
when campo4 > campo5 then campo4
else campo5
end
from tabela
(é só vc ir melhorando a lógica)
Mas sinceramente, acho que o desempenho seria melhor se trouxesse para o java e fizesse o ordenamento lá, ou se usasse variáveis no mysql.
Como faço esse ordenamento em java ??
ordene direto na sua consulta sql.
Não entendi :?
eu não sei qual o maior valor… vou usar aquele código de antes na consulta ? É isso ??
maus… não tinha lido o poste anterior…
use um algoritmo de ordenação existem vários…bubleshot, binário,ordenação direta…
pesquise sobre algoritmo de ordenação por seleção direta é o mais fácil de entender…depois é só adaptalo ao seu caso.
estava olhando, existe a função GREATEST, mas não sei se funcionaria para pegar o segundo e terceiro.
yhhik vou pesquisar sobre isso…
e evefuji como usa a a função GREATEST ?? já é alguma coisa :lol:
Acho q o GREATEST vai dar certo…
É o GREATEST só encontra o primeiro mesmo…
tentei usar o EXCEPT mais não deu certo…
alguma idéia??
se quer fazer mesmo no mysql, vou dar uma sugestão. (se fosse no oracle ou no postgre teria outras opções mais viáveis, mas no mysql não conheço)
create view tmpTable as
select id, campo1
from tabela
union all
select id, campo2
from tabela
union all
select id, campo3
from tabela
union all
select id, campo4
from tabela
union all
select id, campo5
from tabela;
select a.id, a.campo1
from tmpTable a
inner join tmpTable b
on a.id = b.id
and a.campo1 <= b.campo1
group by a.id, a.campo1
having count(*) <= 3
Tem alguma forma de aparecer o nome do campo usando o GREATEST ?? pq só aparece o valor…e tendo o nome do campo daria pr fazer tipo um filtro no netbeans…
A consulta que te passei não funcionou? Não cheguei a testar, mas faz o teste aí.
É só mudar o nome da tabela e o “campo1” … pelo campo. Tenta entender bem o que está sendo feito, não é uma lógica complexa.