製品と属性の 2 つのテーブルがあります。各製品は多くの属性を持つことができます!
複数の属性を持つ製品を見つけなければならないときに問題が始まります。
select * from `products`
left join `pattributes` on `pattributes`.`products_id` = `products`.`id`
where `products`.`status` = 1
AND `products`.`sold` = 0
AND `products`.`deleted` = 0
AND `products`.`categories_id` = 30
AND `pattributes`.`attributes_id` = 5
AND `pattributes`.`values_id` = 10
AND `pattributes`.`attributes_id` = 4
AND `pattributes`.`values_id` = 15
group by `products`.`id`
order by `products`.`top` desc,
`products`.`id` desc
したがって、2 つ以上の属性を探している場合、0 行が返されます。しかし、1つの属性を探すとうまくいきます。
私は mysql の第一人者ではありません。左結合で行う必要があるかどうかはわかりません。多分誰かがそれに対する最善の解決策を知っていますか?
SQL Fiddle を追加しました。