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

Dynamiczne kolumny w instrukcji SQL Select, zachowujące niezdefiniowane wartości

Jesteś bardzo blisko. Musisz dołączyć do tabeli klucz/wartość itemproperties raz dla każdego odrębnego klucza (właściwości), który musisz odzyskać. Chodzi o to, że musisz użyć LEFT JOIN . Zwykły wewnętrzny JOIN pomija wiersz wyjściowy, gdy kryterium łączenia nie jest spełnione.

Spróbuj tego.

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')

Wyrażenia wybierające Name wartości (np. p3.Name = 'Price' ) wejdź w ON klauzulę zamiast WHERE klauzula.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Rekurencja MySQL?

  2. Jak optymalnie używać COALESCE() w klauzuli WHERE?

  3. Kod błędu MySQL:1175 podczas UPDATE w MySQL Workbench

  4. Wartość logiczna MySQL — odwracanie wartości?

  5. Obetnij wszystkie tabele w bazie danych MySQL, które pasują do wzorca nazwy