sql >> Databasteknik >  >> RDS >> Mysql

Dynamiska kolumner i SQL Select-sats, behåller odefinierade värden

Du är väldigt nära. Du måste ansluta din nyckel-/värdetabell itemproperties en gång för varje distinkt nyckel (egenskap) du behöver hämta. Saken är den att du måste använda LEFT JOIN . Vanlig inre JOIN undertrycker utdataraden när kopplingskriteriet inte är uppfyllt.

Prova detta.

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

Uttrycken som väljer Name värden (z.B. p3.Name = 'Price' ) gå in i din ON sats i stället för din WHERE klausul.



  1. Migrerar MySQL 8.0.20-databas till AWS Aurora

  2. MariaDB JSON_LENGTH() Förklarad

  3. Gruppera mysql-fråga med 15 minuters intervall

  4. Vad betyder dessa alternativ för kopiera endast säkerhetskopiering?