mysql高级查询基于params选择

时间:2016-04-13 08:26:48

标签: php mysql

首先请高兴我是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。如果我发送两个参数,我发现两个组合......不多或少

1 个答案:

答案 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)
)