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.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s