我希望标题以某种方式有意义。
我在数据库中有 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,则查询不应返回任何内容。谁能帮我改变我的查询?