php - mysql基于参数的高级查询选择

标签 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,如果我只发送一个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/

相关文章:

php - 在一个 catch block 中捕获多种异常类型

php - Eloquent 查找表和模型创建

java - 如何使MySQL表的某一列不可见

php - 按 mysql 选项分组

php - 如何在magento的自定义模块中创建sql安装程序以通过脚本创建表

JavaScript - 在 'for' 循环中设置表单输入属性

php - 如何正确覆盖 PHP CodeSniffer 规则集中的规则/嗅探并避免代码的双重检查?

javascript - 使用隐藏输入检索用户数据是否安全?

php - 在 php/javascript 中将 "Sun Jul 15 2012 00:00:00 GMT+0700 (SE Asia Standard Time)"转换为 YYYY-mm-dd

php - 单击按钮时从数据库中选择随机和唯一的行