あなたはとても近いです。キー/値テーブルitemproperties
に参加する必要があります 取得する必要のある個別のキー(プロパティ)ごとに1回。重要なのは、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
ではなく句 条項。