有一个.dbf数据库,里面为各年级学生各学期不及格课程的信息。其中有“学号”、“补考课码”字段“补考课码”的组成包涵学期代码。例如“ABCDEF21”即表示该课程是第2学年第1学期上的课。
现在的问题是:怎样编写代码同时查询出某一学期的各年级不及格学生的名单及课程名(即同时将各年级不及格学生一同查出,而不是一个年级一个年级的查)。

解决方案 »

  1.   

    不知道数据库支持substring之类的函数(sql server中),有的话很简单
    select * from tableName where substring(补考课码, len(补考课码), 1) = 学期代码没有的话只能修改你的数据结构了
      

  2.   

    表结构:
    学号       补考课码  补考次数  补考成绩
    0071002     Abcde32     0
    0271036     DVFES12     0
    9970024     SWERT31     0学号前2位是年级代码,不用解释也能明白。      
    这三条记录分别表示00级的某同学在第3学年第2学期有某门课不及格;02级某同学第1学年第2学期有某门课不及格;99级某同学在第3学年第2学期有某门课不及格。而00级和02级的同学都是在同一个学期出现了不及格,如何编写代码将他们一同查出来(可能还会有期他年级的同学在这个学期不及格)?
      

  3.   

    select * from t1x where inttostr(mod( strtoint(SubString(学号,1,2))+Strtoint(subString(补考课码,6,1)),100) )+subString(补考课码,7,1)) =
       (select inttostr(mod( strtoint(SubString(学号,1,2))+Strtoint(subString(补考课码,6,1)),100))+subString(补考课码,7,1)) from t1y where t1x.学号=t1y.学号)(学号前两位+课码第六位)模100的数值转为字符 再连上 课码第七位:
      (00+3)/100 = 3 , 课码最后一位 则为  '32'
       (02+1) /100 = 3 ,...                  '32'
       (99+3) /100 = 2 ,...                  '21'
      

  4.   

    里面采用了两级嵌套两个表为t1x,t1y
      

  5.   

    select * from tlx where substring(补考课码,7,1)='1'(或 '2')
      

  6.   

    通过不断测试,解决了问题,其条件式为:
    Where (x.学号=b.学号) and (((b.学号 Like '___02%') and (b.补考课码 Like '%21')) or ((b.学号 Like '___03%') and (b.补考课码 Like '%11')) or ((b.学号 Like '___94%') and (b.补考课码 Like '%22')))
    用上述条件即可查出需要的学生。
    参与来帖者接分。