miércoles, julio 16

Como convertir un campo a varias columnas en mysql

Resulta que en ocasiones necesitamos que en una consulta de mysql, en vez de que nos arroje los datos de manera vertical, es decir registro a registro, necesitamos que cierto campo o campos, dependiendo de su valor, nos aparezca como una nueva columna, bueno, esto es muy facil usando la sentencia if.

Supongamos que tenemos una tabla asi:

Producto
id
estado_fisico
nombre


con los siguientes valores:

SELECT * FROM producto;

nos dara algo similar a:

id--------estado_fisico--------nombre
1------------1--------------Caramelos
2------------2--------------Platano
3------------3--------------Jabon

Pero si deseamos que nos de un resultado similar a este, es decir convertir un campo a varias columnas
dependiendo de su valor:

id--nombre------bueno-------regular--------------malo
1--Caramelos----1-------------0------------------0
2--Platano------0-------------1------------------0
3--Jabon--------0-------------0------------------1


nuestra consulta quedaria de la siguiente manera:

SELECT
id, nombre,
if(estado_fisico=1,1,0) as bueno,
if(estado_fisico=2,1,0) as regular,
if(estado_fisico=3,1,0) as malo
from producto

Muy util en algunas situaciones, o bien para luego convertir este resultado en una subconsulta, etc.