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

Динамични колони в оператора SQL Select, запазвайки недефинирани стойности

Вие сте много близки. Трябва да се присъедините към вашата таблица ключ/стойност itemproperties веднъж за всеки отделен ключ (свойство), който трябва да извлечете. Работата е там, че трябва да използвате LEFT JOIN . Обикновен вътрешен JOIN потиска изходния ред, когато критерият за присъединяване не е изпълнен.

Опитайте това.

SELECT i.ID as ItemID, i.Name as ItemName, 
       p1.Value AS Color, p2.Value AS Speed, p3.Value AS Price
  FROM items as i
  LEFT JOIN itemproperties AS p1 ON (i.ID=p1.ItemID) AND (p1.Name = 'Color')
  LEFT JOIN itemproperties AS p2 ON (i.ID=p2.ItemID) AND (p2.Name = 'Speed')
  LEFT JOIN itemproperties AS p3 ON (i.ID=p3.ItemID) AND (p3.Name = 'Price')

Изразите, избиращи Name стойности (z.B. p3.Name = 'Price' ) отидете във вашия ON клауза вместо вашето WHERE клауза.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ГРЕШКА 1118 (42000) Размерът на реда е твърде голям

  2. недефинирана грешка в индекса от php arrya

  3. Заредете данни от CSV в битово поле в mysql

  4. Mysql автоматично добавяне на префикси към полета

  5. MySQL - Дизайн на супертип/подтип