我希望标题以某种方式有意义。
我在数据库中有 3 个表。第一个保存product_variant
记录,第二个保存label
记录,第三个是ref
中间的表。
product_variant
: (id, productId, serviceProviderId)。label
:(ID,标签)。product_variant_label_ref
: (label_id,variant_id)。
我的查询的输入参数是:productType
和serviceProviderId
标签集,我的目标是product_variant
根据输入参数选择表中的行。
这是我在休眠 xml 文件中的查询:
SELECT v.*
FROM product_variant v
INNER JOIN product_variant_label_ref r ON v.id = r.variant_id
INNER JOIN product_product p ON p.productType = :productType
INNER JOIN product_label l ON l.id = r.label_id
WHERE v.product_id = p.id
AND v.serviceprovider_id = :serviceProviderId
AND l.label in (:labels)
问题是,对于IN
运算符,我得到了析取OR
选择,而我想要AND
介于两者之间。如果我指定不同的标签作为输入,我只想要那些product_variant
通过 ref 表与所有标签有关系的行。如果输入标签之一不属于 any product_variant
,则查询不应返回任何内容。谁能帮我改变我的查询?