Mysql
 sql >> Database >  >> RDS >> Mysql

Conversione del set di risultati MySQL da righe a colonne

Mmmm... EAV. Uno dei tanti motivi per evitare gli EAV (entity-attribute_value) è che sono più difficili da segnalare e da interrogare. Tuttavia, se gli attributi che desideri sono noti in anticipo, puoi fare qualcosa del tipo:

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

Ora, MySQL ha un GROUP_CONCAT che ti consentirà di concatenare più valori per lo stesso attributo in un elenco se lo consenti (ad esempio se un'entità può avere più attributi Make).