MySQL Forums
Forum List  »  Spanish

Transponer multiples registros como columnas
Posted by: werwer w
Date: September 08, 2013 11:59AM

Tengo esta tabla sencilla de tipo campo-valor. He resumido el problema a una tabla que solo almacena tres valores distintos para 'campo' (superficie, habitaciones y garaje), pero la tabla real contiene mas posibles valores (descripcion, tipo, operacion, precio, planta, ascensor, etc). Es para viviendas de inmobiliarias, todas las viviendas tienen los mismos valores de campos, y el id identifica a cada vivienda y es unico y autoincremental.

La tabla ORIGINAL es esta:
id campo valor
1 superficie 55
1 habitaciones 2
1 garaje NO
2 superficie 75
2 habitaciones 3
2 garaje SI
3 superficie 100
3 habitaciones 4
3 garaje NO

Lo que quiero es muy simple pero para mis conocimientos muy complejo. Solo necesito mostrar el listado de todas las viviendas con sus caracteristicas, pero con los nombres de los campos como nombres de columnas, o sea, trasponiendo la tabla, lo que en SQL Server de MS se conoce como PIVOT y que en MySQL creo que no existe. He encontrado algunas soluciones pero solo sirven para tablas con dos valores por vivienda (baños y superficie, ó bien superficie y habitaciones, pero no mas de dos), y yo necesito adaptar esta solucion para que me salgan todos los campos de cada vivienda, de esta forma:

TABLA RESULTADO QUE BUSCO:
id superficie habitaciones garaje ... etc, los que sean
1 55 2 NO
2 75 3 SI
3 100 4 NO


El SQL que funciona para dos valores (superficie y habitaciones) es este::

SELECT
t1.ID,
t1.valor AS superficie,
t2.habitaciones
FROM tabla AS t1
INNER JOIN (
SELECT
ID,
valor AS habitaciones
FROM tabla
WHERE campo='habitaciones'
) AS t2
ON t1.ID=t2.ID AND t1.campo='superficie'

Y muestra esta TABLA QUE LO RESUELVE A MEDIAS:
id superficie habitaciones
1 55 2
2 75 3
3 100 4

LA PREGUNTA ES: Cómo añadir mas sentencias para que resuelva el problema con mas valores de 'campo'.
PREGUNTA ALTERNATIVA: Si esta no sirve, ¿hay otras sentencias que me lo resuelvan igualmente?.

Mil gracias de verdad por el tiempo y la atención.

Options: ReplyQuote


Subject
Views
Written By
Posted
Transponer multiples registros como columnas
28805
September 08, 2013 11:59AM


Sorry, you can't reply to this topic. It has been closed.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.