各位大侠...现要实现如下功能....请大家不惜赐教牙~
首先:数据库表结构如下:
table1
字段有:
座号,考试编号,分数
1      001     80
2      001     90
1      002     85
1      004     75
1      003     76
2      002     50
2      003     40
3      001     85
3      002     85
3      003     80现在要将这个表中001~003考试的总分>200分的学生的座号,所有的考试编号,分数写到一个文本中来
(注:每个座号考试科目数可能不同,只要该座号的学生考试的总分>200,就要将这个座号所有的考试记录都写到另个文本中)
上表就是写入文本的应该是如下的记录:
1      001     80
1      002     85
1      004     75
1      003     76
3      001     85
3      002     85
3      003     80请问,这在dephi中怎样实现...
我是想首先先select sum(分数) group by 座号,将分数大于200的座号给select 出来,然后将select 出来的座号储存...然后再将这个座号的所有记录给select出来,
我不太清楚的是,如果这样座,那第一次select出来的座号要怎样去储存它,,,
因为并不知道到底具体会有多少个座号的总分会大于200
然后,后一个按座号去select的时候又该怎样去写这个循环....请各位大侠赐教...如有略微详细的代码不剩感激.....

解决方案 »

  1.   

    select * from table1 a left join (select sum(分数)as 总分 from table1 group by 座号) b on a.座号=b.座号
      

  2.   

    我是想首先先select sum(分数) group by 座号,将分数大于200的座号给select 出来,然后将select 出来的座号储存...然后再将这个座号的所有记录给select出来,
    我不太清楚的是,如果这样座,那第一次select出来的座号要怎样去储存它,,,
    ------------------------------------------------------------------------------------
    可以这样试试,将第一次查询出来的结果插入到临时表中,再在临时表中查询座号
      

  3.   

    这个问题好像笨方法才是最好的方法,你列个半天先挑出座号,然后再挑选座号,要操作好几下数据库。还不如直接order完用循环(判断EOF)+StringList(开始一个新座号,判断上次的和是否大于200,写或者不写都清空一次,然后添加)+一个临时变量(特定帐号的成绩和)+座号变量来的快。毕竟内存比操作数据库快N备。
      

  4.   


    sql语句这么写
    select * from tt where id in
    (
    select id from tt group by id
    having sum(fs)> 200
    )然后将数据写入文件就可以了。