1

私は 4 つのテーブルを使用しています。それらを「products」、「attributes_categories」、「attributes」、「product_has_attributes」と呼びます。"products" のすべての製品には、次のように "product_has_attributes" に多くの属性があります。

[product_has_attributes] : product1
attribute_id=1 (Brands->Sony)
attribute_id=4 (Screen size -> 20")
attribute_id=7 (Colors -> Black)
attribute_id=8 (Colors -> White)

products と product_has_attributes は、products.id = product_has_attributes.product_id で結合されたままになります

単純な SELECT は、各製品をその属性の数だけ正しく返します。

ここで、次の製品をすべて選択したいと思います。

product_has_attributes.attribute_id=1 AND 
product_has_attributes.attribute_id=4 AND 
(product_has_attributes.attribute_id=7 OR 
product_has_attributes.attribute_id=8)

しかし、予想どおり、product_has_attributes.attribute_id は同時に 1 AND 4 AND (7 OR 8) にすることはできません...したがって、レコードは返されません。

説明したロジックでレコードを返すように SQL を構築するにはどうすればよいですか?

ありがとう、ジョージ

4

1 に答える 1