大家帮下忙了请教一个SQL查询的问题比如我现在查询SELECT * FROM XS WHERE 专业名='计算机'查询完成之后我可不可以在上次查询的基础之上在进行相关查询呢?比如我在查完计算机专业的所有学生之后,想查出计算机专业所有的男同学不使用SELECT * FROM XS WHERE 专业名='计算机' AND 性别='男'直接在上次查询的基础上再查寻,该怎么弄呢?谢谢各位老大了!我现在做的程序有五六个查询选项,事前并不知道那一项选择那一项不选择,要排列组合写查询语句的话太多了,我想分开查询,就是在上次查询的基础之上进行逐步查询!大家帮帮忙了!!!!!!!!!

解决方案 »

  1.   

    这种想法是错误的。正确的做法:
    比如你有两个条件:一个专业,一个性别,
    写语句的时候:
    CString sql = "SELECT * FROM XS WHERE 1=1 ";
    if(选了专业条件)
    {
    sql = sql + "AND 专业 = '计算机'";
    }if(选了性别)
    {
    sql = sql + "AND 性别 = '男'"
    }con.execute(sql);
      

  2.   

    好像有个什么Filter之类的东西......
      

  3.   

    有一种想法不知道可不可行。你可以将上次查询的数据保存起来。
    保存:CSTring szTest = “SELECT * FROM XS WHERE 专业名='计算机' ”;第二次查询的时候将保存的数据自己填上。就行了。
    CSTring szTest2 = “AND 性别='男'” ;那么SELECT * FROM XS WHERE 专业名='计算机' AND 性别='男' 就等于
    szTest + szTest2 性别='男' 这样就行了。看你怎么设计了。想法而已~~别拍我砖~
      

  4.   

    是sql语言的问题吧, 看看sql语句好像有这么回事的,, 
      

  5.   

    就是这个,对记录集进行筛选,设置成自己要筛选的字符串,恢复设置成adFilterNone