如题~
我现在做一个自定义统计模块:要求实现用户自己输入想要统计的条件,然后根据这些条件生成一条或多条SQL语句进行查询,最后返回查询结果(类似于条件匹配查询).难点在于用户选择的条件与返回的结果不在一个表中,而是多个表中(包括一些中间表),相当与每输入一个条件都有可能是一个子查询.有没有哪位朋友曾经做过这个模块,请指点一下思路,或者提供代码出来.我QQ是:18830325   高分酬谢!

解决方案 »

  1.   

    有些东西像姓名,职位一些不确定条件只能由客户自己来输入...即便是用下拉筐控制也不行 因为条件关联到多个表进行查询...SQL语句不知道怎么生成.头都要想大了
      

  2.   

    一般的做法是对于给定的检索页面在数据库里先做个视图(view)
    视图字段对应页面给定的各种检索条件
    执行时,取得页面值,然后在该视图中检索(这样对sql文要求就很简单了)
    好处在于:检索速度加快;sql文简单
    不足在于:针对每种检索可能需要建立很多的视图(不过特别复杂的查询也不是特别)
      

  3.   


    谢谢你的建议,不过领导要求写个方法拼SQL语句...
      

  4.   

    用sqlmapping 框架  很不错的  建议看下   你的问题对他来说很简单
      

  5.   

    我给你一种方法: 
    String sql="select * from 【table】where 1=1 "; 
    if(条件1){ 
    sql+=" and name='king' "} 
    if(条件2){ 
    sql+=" and password='123' "} 
    ..... 
    ..... 
    就这么拼下去 
      

  6.   


    你的思路我在做简单匹配的时候用过的..  这次不同了 因为查不是一个表是多个表,而且不是SELECT * 这么简单  要SELECT的不一定是哪一列或者哪几列
    我声明的变量都是  表明_列名_条件 然后截取字符串进行判断,但是做到一半的时候没有思路了. 闷~~
      

  7.   

    String sql="select * from 【table1】t1 and 【table1】t2  where 1=1 "; 
    if(条件1){ 
    sql+=" and t1.name=t2.name "} 
    if(条件2){ 
    sql+=" and password='123' "} 
    ..... 
    ..... 
    就这么拼下去 
      

  8.   

    谢谢你们,我现在做的思路大概是这样 但是不会出现 password='123' 这么简单的条件   都是子查询或者查中间表的那种... 而且查的不是一张表
      

  9.   

    建议楼主自己做一个流程图,需求都知道了,就是怎么设计吧,最终是要sql语句,生成的过程,我想就是添加查询条件,还有从哪个表中得到,这些就是要智能的可以自动生成的地方吧,看看怎么弄,字段和需要生成的关系,应该不是太复杂,呵呵,希望早日做好.