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.