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.