Du er meget tæt på. Du skal tilslutte din nøgle-/værditabel itemproperties én gang for hver særskilt nøgle (egenskab), du skal hente. Sagen er, at du skal bruge LEFT JOIN . Almindelig indre JOIN undertrykker outputrækken, når sammenføjningskriteriet ikke er opfyldt.
Prøv dette.
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')
Udtrykket, der vælger Name værdier (z.B. p3.Name = 'Price' ) gå ind i din ON klausul i stedet for din WHERE klausul.