这种多条件查询如何写SQL语句

时间:2022-06-21 02:54:30
基本条件有:市、县、时间,面积,业务员、产品名称等,而这些条件下还包含一些子条件,用户需求要根据任意条件组合或者有些不选定条件来查询数据,例如条件可能是:

1、某个市 + 某两个下属县 + 一周内 + 花生油的销售情况列表
2、一个月内 + ***业务员 的销售业绩情况列表
。。。

这个复杂的查询条件要怎么写SQL语句啊,怎么样才能包括用户需求的所有条件情况?好复杂,急呀!

10 个解决方案

#1




一般这种不可能用一个SQL语句满足这么多个需要。建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。

#2


贴记录及要求结果出来看看

#3


有兴趣回答
但是还是不知道你到底要干嘛?

提问时请讲清楚! 最好附上具体需求,部分结果或者代码

#4


按照你的查询条件,把sql拼装起来就行

#5


只要你知道客户的需求就好办。
根据SQL语句不同关键字将查询字符串打散,如打散成:字段列表块(内含distinct分块和count,avg等聚合函数分块),where条件块,表名列表块,order by排序块,group by分组块,having条件块和limit条件块等。
再判断表单提交的内容得出各个块的内容
最后按顺序把这些查询块相连起来就OK了。
弄清楚了有哪些块,查询表单的设计也就清晰了。

#6


也一个SQL解析引擎!!

估计你用个一个星期就写玩了!!
SQL-->引擎-->执行

#7


这是一个关于某产品销售记录的查询,我现在还没有具体数据,列了个表,麻烦各位帮忙看一下:

查询依据的条件有:1、某市:比如太原市  大同市  晋中市。。。等
                  2、某县:比如娄烦县  绛县    榆社县。。。等
                  3、售出时间:起始时间和截至时间均由用户指定
                  4、卖场面积:范围标准:500M2以下   500-1000   1000-5000   5000以上
                  5、销售人员:甲 乙 丙 丁。。。

上述条件客户可能任意选择,也有可能不选定,例如条件:
1、某个市 + 某两个下属县 + 一周内 + 花生油的销售情况列表 
2、一个月内 + ***业务员 的销售业绩情况列表 

查询结果要求有:
  
            省     市    县   客户名称  卖场面积  产品名称 产品规格  所属类别  售出数量  售出日期   销售人员
结果举例:山西省 太原市 娄烦县  广盛源   1500M2   花生油   900ML*12  一线产品   100   2009-6-20   甲

不知道我描述清楚没有,查询条件过于复杂,而且有的条件选择,有的不选择,实在不知道该怎么组合起来?

#8


这是一个关于某产品销售记录的查询,我现在还没有具体数据,列了个表,麻烦各位帮忙看一下: 

查询依据的条件有:1、某市:比如太原市  大同市  晋中市。。。等 
                  2、某县:比如娄烦县  绛县    榆社县。。。等 
                  3、售出时间:起始时间和截至时间均由用户指定 
                  4、卖场面积:范围标准:500M2以下  500-1000  1000-5000  5000以上 
                  5、销售人员:甲 乙 丙 丁。。。 

上述条件客户可能任意选择,也有可能不选定,例如条件: 
1、某个市 + 某两个下属县 + 一周内 + 花生油的销售情况列表 
2、一个月内 + ***业务员 的销售业绩情况列表 

查询结果要求有: 
  
            省    市    县  客户名称  卖场面积  产品名称 产品规格  所属类别  售出数量  售出日期  销售人员 
结果举例:山西省 太原市 娄烦县  广盛源  1500M2  花生油  900ML*12  一线产品  100  2009-6-20  甲 

不知道我描述清楚没有,查询条件过于复杂,而且有的条件选择,有的不选择,实在不知道该怎么组合起来? 

引用 3 楼 voyage_mh1987 的回复:
有兴趣回答 
但是还是不知道你到底要干嘛? 

提问时请讲清楚! 最好附上具体需求,部分结果或者代码 

#9


这是一个关于某产品销售记录的查询,我现在还没有具体数据,列了个表,麻烦各位帮忙看一下: 

查询依据的条件有:1、某市:比如太原市  大同市  晋中市。。。等 
                  2、某县:比如娄烦县  绛县    榆社县。。。等 
                  3、售出时间:起始时间和截至时间均由用户指定 
                  4、卖场面积:范围标准:500M2以下  500-1000  1000-5000  5000以上 
                  5、销售人员:甲 乙 丙 丁。。。 

上述条件客户可能任意选择,也有可能不选定,例如条件: 
1、某个市 + 某两个下属县 + 一周内 + 花生油的销售情况列表 
2、一个月内 + ***业务员 的销售业绩情况列表 

查询结果要求有: 
  
              省    市    县  客户名称  卖场面积  产品名称 产品规格  所属类别  售出数量  售出日期  销售人员 
结果举例:山西省 太原市 娄烦县  广盛源  1500M2  花生油  900ML*12  一线产品  100  2009-6-20  甲 

不知道我描述清楚没有,查询条件过于复杂,而且有的条件选择,有的不选择,实在不知道该怎么组合起来? 

引用 2 楼 WWWWA 的回复:
贴记录及要求结果出来看看

#10




你这不是数据库的问题,是如何根据你的用户界面上的选择输入生成相应SQL语句的问题。

你的界面是用什么开发的?

在你的程序中生成相应的SQL语句。

#1




一般这种不可能用一个SQL语句满足这么多个需要。建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。

#2


贴记录及要求结果出来看看

#3


有兴趣回答
但是还是不知道你到底要干嘛?

提问时请讲清楚! 最好附上具体需求,部分结果或者代码

#4


按照你的查询条件,把sql拼装起来就行

#5


只要你知道客户的需求就好办。
根据SQL语句不同关键字将查询字符串打散,如打散成:字段列表块(内含distinct分块和count,avg等聚合函数分块),where条件块,表名列表块,order by排序块,group by分组块,having条件块和limit条件块等。
再判断表单提交的内容得出各个块的内容
最后按顺序把这些查询块相连起来就OK了。
弄清楚了有哪些块,查询表单的设计也就清晰了。

#6


也一个SQL解析引擎!!

估计你用个一个星期就写玩了!!
SQL-->引擎-->执行

#7


这是一个关于某产品销售记录的查询,我现在还没有具体数据,列了个表,麻烦各位帮忙看一下:

查询依据的条件有:1、某市:比如太原市  大同市  晋中市。。。等
                  2、某县:比如娄烦县  绛县    榆社县。。。等
                  3、售出时间:起始时间和截至时间均由用户指定
                  4、卖场面积:范围标准:500M2以下   500-1000   1000-5000   5000以上
                  5、销售人员:甲 乙 丙 丁。。。

上述条件客户可能任意选择,也有可能不选定,例如条件:
1、某个市 + 某两个下属县 + 一周内 + 花生油的销售情况列表 
2、一个月内 + ***业务员 的销售业绩情况列表 

查询结果要求有:
  
            省     市    县   客户名称  卖场面积  产品名称 产品规格  所属类别  售出数量  售出日期   销售人员
结果举例:山西省 太原市 娄烦县  广盛源   1500M2   花生油   900ML*12  一线产品   100   2009-6-20   甲

不知道我描述清楚没有,查询条件过于复杂,而且有的条件选择,有的不选择,实在不知道该怎么组合起来?

#8


这是一个关于某产品销售记录的查询,我现在还没有具体数据,列了个表,麻烦各位帮忙看一下: 

查询依据的条件有:1、某市:比如太原市  大同市  晋中市。。。等 
                  2、某县:比如娄烦县  绛县    榆社县。。。等 
                  3、售出时间:起始时间和截至时间均由用户指定 
                  4、卖场面积:范围标准:500M2以下  500-1000  1000-5000  5000以上 
                  5、销售人员:甲 乙 丙 丁。。。 

上述条件客户可能任意选择,也有可能不选定,例如条件: 
1、某个市 + 某两个下属县 + 一周内 + 花生油的销售情况列表 
2、一个月内 + ***业务员 的销售业绩情况列表 

查询结果要求有: 
  
            省    市    县  客户名称  卖场面积  产品名称 产品规格  所属类别  售出数量  售出日期  销售人员 
结果举例:山西省 太原市 娄烦县  广盛源  1500M2  花生油  900ML*12  一线产品  100  2009-6-20  甲 

不知道我描述清楚没有,查询条件过于复杂,而且有的条件选择,有的不选择,实在不知道该怎么组合起来? 

引用 3 楼 voyage_mh1987 的回复:
有兴趣回答 
但是还是不知道你到底要干嘛? 

提问时请讲清楚! 最好附上具体需求,部分结果或者代码 

#9


这是一个关于某产品销售记录的查询,我现在还没有具体数据,列了个表,麻烦各位帮忙看一下: 

查询依据的条件有:1、某市:比如太原市  大同市  晋中市。。。等 
                  2、某县:比如娄烦县  绛县    榆社县。。。等 
                  3、售出时间:起始时间和截至时间均由用户指定 
                  4、卖场面积:范围标准:500M2以下  500-1000  1000-5000  5000以上 
                  5、销售人员:甲 乙 丙 丁。。。 

上述条件客户可能任意选择,也有可能不选定,例如条件: 
1、某个市 + 某两个下属县 + 一周内 + 花生油的销售情况列表 
2、一个月内 + ***业务员 的销售业绩情况列表 

查询结果要求有: 
  
              省    市    县  客户名称  卖场面积  产品名称 产品规格  所属类别  售出数量  售出日期  销售人员 
结果举例:山西省 太原市 娄烦县  广盛源  1500M2  花生油  900ML*12  一线产品  100  2009-6-20  甲 

不知道我描述清楚没有,查询条件过于复杂,而且有的条件选择,有的不选择,实在不知道该怎么组合起来? 

引用 2 楼 WWWWA 的回复:
贴记录及要求结果出来看看

#10




你这不是数据库的问题,是如何根据你的用户界面上的选择输入生成相应SQL语句的问题。

你的界面是用什么开发的?

在你的程序中生成相应的SQL语句。