Mysql
 sql >> база данни >  >> RDS >> Mysql

Преобразуване на MySQL резултат от редове в колони

Мммм... EAVs. Една от многото причини да избягвате EAV (entity-attribute_value) е, че те са по-трудни за докладване и запитване. Въпреки това, ако атрибутите, които искате, са известни предварително, можете да направите нещо като:

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

Сега MySQL има GROUP_CONCAT, който ще ви позволи да обедините множество стойности за един и същи атрибут в списък, ако разрешите това (например, ако обектът може да има множество атрибути Make).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да преброите всички записи, но да извлечете само (LIMIT) конкретен номер за показване?

  2. MySQL Trigger за вмъкване на данни в различна DB

  3. Съвети за осигуряване на производителност на базата данни на MySQL - част втора

  4. Експортирайте MySQL база данни към SQLite база данни

  5. Rails интерфейс за заявка къде е проблем с клаузата?