2011-06-22 14 views
5

Después de demasiadas horas no puedo encontrar la respuesta a esto.Encuentra el valor más alto en fila y número de eco y nombre de columna

En primer lugar mi mesa

id | one | two | three | four | five | galname 
------------------------------------------------- 
    1 | 2 | 5 | 23 | 4 | 5 | Bob 

¿Cómo puedo encontrar el valor más alto de la fila y mostrar el nombre colomun.

three - 23 
+1

desde donde estás tratando de obtener la información (php?) – Manuel

+3

[Normalizar los datos] (http://stackoverflow.com/questions/246701/what-i s-normalization-or-normalization-why-is-it-important) – YXD

+1

Sus datos no están normalizados de acuerdo con lo que desea hacer: no puede PIVOTE fácilmente en MySQL. – Konerak

Respuesta

3
select id, GREATEST(one, two, three, four, five) value, 
     case GREATEST(one, two, three, four, five) 
     when one then 'one' 
     when two then 'two' 
     when three then 'three' 
     when four then 'four' 
     when five then 'five' end column_name 
from your_table   
+0

He intentado esto y Obtengo esto constantemente como mi resultado "Id. de recurso n. ° 3". Qué significa esto. Columna 3? He comprobado la tabla mysql y la columna uno tiene el número más alto. Estoy confundido – Darren

+0

en mi apuro de confusión me olvidé de agradecer a todos por su respuesta. Entonces, gracias chicos, es realmente sorprendente que extraños estén dispuestos a ayudarse entre ellos. La humanidad es buena – Darren

+0

Michael solo quería darte las gracias adicionales. Todo parece estar funcionando. Sigo recibiendo "Resorcue id # 3", no estoy seguro de lo que eso significa, pero no importa. Haciendo eco de $ row parece darme el nombre de Coloum. Puedo continuar con el resto de mi código ahora. Muchas gracias. – Darren

1

creo que debe hacer:

SELECT CASE GREATEST(`id`,`one`, `two`, `three`, `four`, `five`) 
     WHEN `id` THEN `id` 
     WHEN `one` THEN `one` 
     WHEN `two` THEN `two` 
     WHEN `three` THEN `three` 
     WHEN `four` THEN `four` 
     WHEN `five` THEN `five` 
     ELSE 0 
     END AS maxcol, 
     GREATEST(`id`,`one`, `two`, `three`, `four`, `five`) as maxvalue 
    FROM tbl 

esto es sólo si no quiere verse aquí: MySQL greatest value in row? (i adaptado la respuesta de ese cargo para satisfacer sus necesidades si usted tiene problemas, de todas formas se refieren a ese puesto)

+0

¿Por qué publicas la respuesta de otro? Esto se copia del enlace publicado en los comentarios anteriores. – Daric

+0

¡Eso es exactamente lo que escribí! (Adapté la respuesta a tus necesidades significa 'si no quieres adaptar la respuesta de la otra respuesta, lo hago por ti, pensé que estaba claro) –

Cuestiones relacionadas