Mysql
 sql >> Base de données >  >> RDS >> Mysql

Conversion du jeu de résultats MySQL de lignes en colonnes

Mmmm... EAV. L'une des nombreuses raisons d'éviter les EAV (entity-attribute_value) est qu'ils sont plus difficiles à signaler et à interroger. Cependant, si les attributs que vous voulez sont connus à l'avance, vous pouvez faire quelque chose comme :

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

Maintenant, MySQL a un GROUP_CONCAT qui vous permettra de concaténer plusieurs valeurs pour le même attribut dans une liste si vous le permettez (par exemple, si une entité peut avoir plusieurs attributs Make).