Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Convertendo o conjunto de resultados do MySQL de linhas para colunas


Mmmm... EAVs. Uma das muitas razões para evitar EAVs (entity-attribute_value) é que eles são mais difíceis de relatar e consultar. No entanto, se os atributos que você deseja são conhecidos com antecedência, você pode fazer algo como:
Select id
    , Min( Case When name = 'Make' Then attribute_value End ) As Make
    , Min( Case When name = 'Year' Then attribute_value End ) As Year
    , Min( Case When name = 'Type' Then attribute_value End ) As Type
    , Min( Case When name = 'Axles' Then attribute_value End ) As Axles
    , Min( Case When name = 'Size' Then attribute_value End ) As Size
    , Min( Case When name = 'Frame' Then attribute_value End ) As Frame
    , ...
From attributes
Where name In('Make','Year','Type','Axles','Size','Frame',....)
Group By id

Agora, o MySQL tem um GROUP_CONCAT que permite concatenar vários valores para o mesmo atributo em uma lista se você permitir isso (por exemplo, se uma entidade pode ter vários atributos Make).