Вие сте много близки. Трябва да се присъедините към вашата таблица ключ/стойност itemproperties
веднъж за всеки отделен ключ (свойство), който трябва да извлечете. Работата е там, че трябва да използвате LEFT JOIN
. Обикновен вътрешен JOIN
потиска изходния ред, когато критерият за присъединяване не е изпълнен.
Опитайте това.
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')
Изразите, избиращи Name
стойности (z.B. p3.Name = 'Price'
) отидете във вашия ON
клауза вместо вашето WHERE
клауза.