有两个主要表格:
产品
过滤器
和一个连接表
product_filter
假设我们有几个产品和几个过滤器。我们有一个id为1的特殊产品,它与两个过滤器相连。这些过滤器的名称是黑色和白色,带有ID 1和2.因此,连接中我们有两个字段:(product_id:1,filter_id:2),(product_id:1,filter_id:2)。我想选择那个产品。
我尝试过的。首先,我尝试使用where or
子句:select * from products join product_filter on product_filter.product_id = products.id join filters on filters.id = product_filter.filter_id where filters.name = "black" or filters.name = "white"
。但这种选择产品只有黑色或仅白色滤光片。使用and
子句而不是or
根本不会选择任何内容。
答案 0 :(得分:2)
在这种情况下你可以加入filters
表两次,如
select * from products
join product_filter on product_filter.product_id = products.id
join filters on filters.id = product_filter.filter_id
join filters fl on fl.id = product_filter.filter_id
where filters.name = 'black'
and fl.name = 'white';