sql >> Databasteknik >  >> RDS >> Mysql

Konvertera MySQL Resultset från rader till kolumner

Mmmm...EAVs. En av många anledningar till att undvika EAVs (entity-attribute_value) är att de är svårare att rapportera och fråga mot. Men om attributen du vill ha är kända i förväg kan du göra något som:

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

Nu, MySQL, har en GROUP_CONCAT som låter dig sammanfoga flera värden för samma attribut till en lista om du tillåter det (t.ex. om en entitet kan ha flera Make-attribut).



  1. Bästa metoder för skalning av databaser:Del 1

  2. Identitetsökningen hoppar i SQL Server-databasen

  3. Stöder MySQL användardefinierade datatyper

  4. MySQL-utdatamaskering (t.ex. telefonnummer, SSN, etc. skärmformatering)