Anda sangat dekat. Anda harus menggabungkan tabel kunci/nilai itemproperties
sekali untuk setiap kunci (properti) berbeda yang perlu Anda ambil. Masalahnya, Anda harus menggunakan LEFT JOIN
. JOIN
dalam polos menekan baris output ketika kriteria join tidak terpenuhi.
Coba ini.
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')
Ekspresi yang memilih Name
nilai (z.B. p3.Name = 'Price'
) masuk ke ON
klausa daripada WHERE
. Anda klausa.