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

Konvertering af MySQL-resultatsæt fra rækker til kolonner

Mmmm...EAV'er. En af de mange grunde til at undgå EAV'er (entity-attribute_value) er, at de er sværere at rapportere og forespørge mod. Men hvis de attributter, du ønsker, er kendt på forhånd, kan du gøre noget 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 giver dig mulighed for at sammenkæde flere værdier for den samme attribut til en liste, hvis du tillader det (f.eks. hvis en enhed kan have flere Make-attributter).



  1. Opret PHP-array fra MySQL-kolonnen

  2. Har PL/SQL en tilsvarende StringTokenizer til Java?

  3. Libpuzzle Indeksering af millioner af billeder?

  4. Sådan viser du dato i et andet format i Oracle