sql >> Databáze >  >> RDS >> Mysql

Dynamické sloupce v příkazu SQL Select, uchovávající nedefinované hodnoty

Jste velmi blízko. Musíte připojit svou tabulku klíč/hodnota itemproperties jednou pro každý odlišný klíč (vlastnost), který musíte načíst. Jde o to, že musíte použít LEFT JOIN . Prostý vnitřní JOIN potlačí výstupní řádek, když není splněno kritérium spojení.

Zkuste toto.

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

Výrazy vybírající Name hodnoty (z.B. p3.Name = 'Price' ) přejděte do ON místo vašeho WHERE klauzule.



  1. Jak efektivně navrhnout databázi MySQL pro můj konkrétní případ

  2. Zobrazit záznam starší než 3 měsíce v sql

  3. Jak zavolat uloženou proceduru uvnitř balíčku Oracle s Entity Framework?

  4. Není k dispozici žádný balíček msyql-server