问个查询的问题,,,~急~

lanejacqueline 2006-09-03 11:01:24
各位大侠...现要实现如下功能....请大家不惜赐教牙~
首先:数据库表结构如下:
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的时候又该怎样去写这个循环....

请各位大侠赐教...如有略微详细的代码不剩感激.....

...全文
150 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wudi_1982 2006-09-04
  • 打赏
  • 举报
回复

sql语句这么写
select * from tt where id in
(
select id from tt group by id
having sum(fs)> 200
)

然后将数据写入文件就可以了。

OO_is_just_P 2006-09-04
  • 打赏
  • 举报
回复
这个问题好像笨方法才是最好的方法,你列个半天先挑出座号,然后再挑选座号,要操作好几下数据库。

还不如直接order完用循环(判断EOF)+StringList(开始一个新座号,判断上次的和是否大于200,写或者不写都清空一次,然后添加)+一个临时变量(特定帐号的成绩和)+座号变量来的快。毕竟内存比操作数据库快N备。
lanejacqueline 2006-09-04
  • 打赏
  • 举报
回复
放在临时表中?然后呢?..我还要把这个座号所有的的考试记录全都列出来...
xiaotao2004 2006-09-04
  • 打赏
  • 举报
回复
select * from table1 a left join (select sum(分数)as 总分 from table1 group by 座号) b on a.座号=b.座号
mdejtod 2006-09-04
  • 打赏
  • 举报
回复
我是想首先先select sum(分数) group by 座号,将分数大于200的座号给select 出来,然后将select 出来的座号储存...然后再将这个座号的所有记录给select出来,
我不太清楚的是,如果这样座,那第一次select出来的座号要怎样去储存它,,,
------------------------------------------------------------------------------------
可以这样试试,将第一次查询出来的结果插入到临时表中,再在临时表中查询座号

2,496

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧