首先请高兴我是SQL语言和英语的初学者。 所以我对此查询有疑问。
我创建了sqlfiddle。 我的查询看起来工作正常,但我发现它无法正常工作
我想编写一个查询,根据将要发送的参数返回产品ID变体
正确的查询结果如下所示
PARAM = 6
id product_id productvariant_id attributevalue_id
1 3 1 6
2 3 2 6
---- BAD RESULTS -----
3 3 3 6
4 3 3 9
6 3 5 6
7 3 6 6
8 3 6 11
PARAM = 6,9
id product_id productvariant_id attributevalue_id
3 3 3 6
4 3 3 9
---- BAD RESULTS -----
3 3 3 6
4 3 3 9
6 3 5 6
7 3 6 6
8 3 6 11
我真正需要的是返回productvariant_id,它包含插入的params的组合,如果我只发送一个attributevalue_id,我需要找到只包含一个attributevalue_id的productvariant。如果我发送两个参数,我发现两个组合......不多或少
答案 0 :(得分:0)
不幸的是,我没有足够的评论声誉,所以我必须写这个作为答案。 你能澄清你的目标吗?
是否要检索attributevalue_id与参数匹配的所有数据集的productvariant_id?
SELECT productvariant_id
FROM productvariantattribute
WHERE attributevalue_id IN ($YOUR_PARAMETER_LIST);
或者,您是否要检索productvariant_id仅包含您指定为参数的attributevalue_ids的所有数据集的productvariant_id?
SELECT `productvariant_id`
FROM `productvariantattribute`
WHERE `attributevalue_id` IN ($YOUR_PARAMETER_LIST)
AND `productvariant_id` NOT IN (
SELECT `productvariant_id`
FROM `productvariantattribute`
WHERE `attributevalue_id` NOT IN ($YOUR_PARAMETER_LIST)
)