
Originariamente inviata da
pegaso22
Ciao a tutti,
come posso fare una select così:
selezionare il record con il valore più basso tra campo1,campo2,campo3,campo4,campo5 che sia diverso da 0.00
Fatemi sapere.
Grazie mille.
Io userei un LEAST ed un approccio BigM
Non mi è chiarissimo se ogni campo-k deve essere diverso da zero, oppure se deve esserlo il minimo.
Se ho interpretato bene...
codice:
select * from tabella
order by
least(if(campo1=0,greatest(max(campo1),max(campo2),max(campo3),max(campo4),max(campo5))+1,campo1),if(campo2=0,greatest(max(campo1),max(campo2),max(campo3),max(campo4),max(campo5))+1,campo2),if(campo3=0,greatest(max(campo1),max(campo2),max(campo3),max(campo4),max(campo5))+1,campo3),if(campo4=0,
greatest(max(campo1),max(campo2),max(campo3),max(campo4),max(campo5))+1,campo4),if(campo5=0,greatest(max(campo1),max(campo2),max(campo3),max(campo4),max(campo5))+1,campo5))
limit 1
Vabbè faccio fatica a scrivere la query.
Comunque la logica è: dato un BigM, che puoi fissare a mano (es. 1000000) se puoi, oppure che puoi
calcolare come greatest(max(campo1),...max(campon))+1, testi se zero, nel qual caso torni bigm, oppure il campo.
Fai il least, ordina su questo campo, limit 1 e prendi il minimo