让我先描述一些背景。我们有一个包含我们所有产品的表,一个包含“产品标签”列表(材料/尺寸/类型)的表,以及一个包含分配给产品的标签列表的表(“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