最初にいくつかの背景を説明しましょう。すべての製品を含むテーブル、「製品タグ」(材料/サイズ/タイプ)のリストを含むテーブル、および製品に割り当てられたタグのリストを含むテーブル(「tag_id」= > 1(材料)、'値'=>'ゴールド'、'製品'=> 123)
これに似たクエリを使用して特定の製品を除外しようとしていますが、機能しないようです。誰かが正しい方向にいくつかのポインタを提供できますか?
SELECT DISTINCT `products`.* FROM `products`,`product_assigned_tags`
LEFT JOIN `product_assigned_tags` AS tags_0 ON tags_0.`tag_id` = 1
LEFT JOIN `product_assigned_tags` AS tags_1 ON tags_1.`tag_id` = 2
WHERE (
((tags_0.`value` = 'silver' ) AND (tags_0.`value` != 'gold' ) ) AND
((tags_1.`value` = 'small' ) AND (tags_1.`value` != 'large' ) )
) AND (`products`.`type` = '2' OR `products`.`type` = '1' ) LIMIT 0, 30