Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Konwersja zbioru wyników MySQL z wierszy na kolumny

Mmmm... EAV. Jednym z wielu powodów, dla których warto unikać EAV (wartość atrybutu encji) jest to, że trudniej jest je zgłosić i wykonać zapytanie. Jeśli jednak pożądane atrybuty są znane z wyprzedzeniem, możesz zrobić coś takiego:

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

Teraz MySQL ma funkcję GROUP_CONCAT, która pozwala łączyć wiele wartości tego samego atrybutu w listę, jeśli na to zezwolisz (np. jeśli jednostka może mieć wiele atrybutów 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. mysql - w jaki sposób można pomóc w wyszukiwaniu pełnotekstowym za pomocą innego indeksu?

  2. Czy istnieje powód, dla którego MySQL nie obsługuje FULL OUTER JOINS?

  3. Jak zmienić domyślny port mysql z 3306 na 3360?

  4. Utwórz kolumnę przestrzenną MySQL — typ danych punktowych z długością szerokości geograficznej bez użycia tabeli Alter

  5. PDO + MySQL zawsze zwraca ciągi, ale co z MsSQL?