mySQL中的多个条件

mySQL中的多个条件,mysql,mysql-workbench,Mysql,Mysql Workbench,我想根据价格、品牌和类别筛选产品。但这些都不是必需的。因此,用户可以仅根据价格或价格和品牌筛选产品。如何仅使用查询在mySQL中编写。我搜索了很多,但在存储过程的帮助下找到了解决方案 如果我编写此查询,请从产品中选择*,其中brandid=1,price=10,categoryid=5。它将获取满足where子句的2个产品 但是,如果用户不想根据品牌来过滤产品,比如说,那么b会怎么查询呢?从brandid=null、price=10、categoryid=5的产品中选择*。。。这将不起作用,因为

我想根据价格、品牌和类别筛选产品。但这些都不是必需的。因此,用户可以仅根据价格或价格和品牌筛选产品。如何仅使用查询在mySQL中编写。我搜索了很多,但在存储过程的帮助下找到了解决方案

如果我编写此查询,请从产品中选择*,其中brandid=1,price=10,categoryid=5。它将获取满足where子句的2个产品


但是,如果用户不想根据品牌来过滤产品,比如说,那么b会怎么查询呢?从brandid=null、price=10、categoryid=5的产品中选择*。。。这将不起作用,因为我不想搜索brandid为null的产品。我想从where条件中删除那个特殊的子句。因此,我期望的查询是从product中选择*,其中price=10,categoryid=5

以增量方式构造查询。这里是Ruby,因为您没有标记编程语言,但是逻辑是完全独立于语言的

query = "SELECT * FROM products"
filters = []
params = []

if price_min
  filters << "price >= ?"
  params << price_min
end

if price_max
  filters << "price <= ?"
  params << price_max
end

if brand
  filters << "brand = ?"
  params << brand
end

# ...

unless filters.empty?
  query += " WHERE " + filters.join(' AND ')
end

那么,您是说您已经编写了一个存储过程来处理这个问题?您是如何直接调用此代码的,还是从应用程序调用此代码的?显示示例数据、预期输出和您拥有的代码written@TimBiegeleisen你为什么认为我是落选者?还有,在不了解数据库结构的情况下,如何回答这个问题?@Ruchiyadav请使用编辑链接将这些信息添加到您的问题中,而不是作为comment@Jens好的……更换好的。但是如果用户没有在Price中选择任何内容,那么Price的值为null。现在运行price==null的查询。而且没有价格数据-你错过了if吗?如果参数为falsy,则不会将相应的子句添加到查询中。如果您不选择任何内容,只需从产品中获取基本的select*。我想对于JavaScript,您也应该进行更改,除非filters.empty?如果过滤器。长度。。。