タイトルがどういうわけか意味があることを願っています。
DBに3つのテーブルがあります。1つ目はproduct_variantレコードを保持し、2つ目はlabelレコードを保持し、3つ目はrefその間のテーブルです。
product_variant:(id、productId、serviceProviderId)。label:(id、label)。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_variantrefテーブルを介してそれらすべてに関係がある行のみが必要です。入力ラベルの1つがいずれにも属していない場合product_variant、クエリは何も返さないはずです。誰かが私のクエリを変更するのを手伝ってもらえますか?