sql >> Databáze >  >> RDS >> Mysql

Převod výsledků MySQL z řádků na sloupce

Mmmm...EAV. Jedním z mnoha důvodů, proč se vyhnout EAV (entity-attribute_value), je to, že je obtížnější je hlásit a dotazovat. Pokud jsou však požadované atributy známy předem, můžete udělat něco jako:

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

Nyní má MySQL GROUP_CONCAT, který vám umožní zřetězit více hodnot pro stejný atribut do seznamu, pokud to dovolíte (např. pokud entita může mít více atributů Make).



  1. příspěvek přejmenoval název souboru z nahrání do databáze

  2. Nelze získat přístup k root uživateli MySql, a to ani po nastavení hesla v nouzovém režimu v linuxovém terminálu

  3. MySQL zde nepodporuje jednořádkové komentáře. Jaký by byl důvod?

  4. Mysql_real_escape_string() Nelze vytvořit odkaz na server