ここには、予想される行数を返さない比較的単純なクエリがあります。私の場合、次のクエリは正しく機能するはずですが、すべての行が複数回表示されるわけではないことを確認するために、ここで重要なものが欠けているに違いありません。
SELECT p.*, c.value AS color, g.value AS gender, p.value AS price
FROM products p
LEFT JOIN product_fields c ON c.product_id = p.id AND c.name = 'color'
LEFT JOIN product_fields g ON g.product_id = p.id AND g.name = 'gender'
LEFT JOIN product_fields pp ON pp.product_id = p.id AND pp.name = 'price'