首先请对我好一点,我是 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,如果我只发送一个attributevalue_id,我需要找到仅包含一个attributevalue_id的productvariant。如果我发送两个参数,我会发现两个参数的组合..不多或更少
最佳答案
不幸的是,我没有足够的声誉来发表评论,因此我必须将其写为答案。 你能澄清一下你的目标吗?
您想要检索 attributevalue_id 与您的参数匹配的所有数据集的 Productvariant_id 吗?
SELECT productvariant_id
FROM productvariantattribute
WHERE attributevalue_id IN ($YOUR_PARAMETER_LIST);
或者您想要检索所有数据集的productvariant_id,其中productvariant_id仅包含您指定为参数的这些attributevalue_ids?
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)
)
关于php - mysql基于参数的高级查询选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36592671/