标题:能用一个语句写出来不
只看楼主
dzy123
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:379
专家分:820
注 册:2013-4-18
结帖率:82%
已结贴  问题点数:20 回复次数:6 
能用一个语句写出来不
[local]1[/local]SELECT MIN(总分) FROM (sele  TOP VAL(thisform.text1.Text) 总分 FROM 高二全年级文 WHERE VAL(班级)>=25 ORDER BY 总分 desc) t into arra zf
 SELECT MIN(语文) FROM (sele  TOP VAL(thisform.text1.Text) 语文 FROM 高二全年级文 WHERE VAL(班级)>=25 ORDER BY 语文 desc) t into arra yw
 SELECT MIN(数学) FROM (sele  TOP VAL(thisform.text1.Text) 数学 FROM 高二全年级文 WHERE VAL(班级)>=25 ORDER BY 数学 desc) t into arra sx
 SELECT MIN(英语) FROM (sele  TOP VAL(thisform.text1.Text) 英语 FROM 高二全年级文 WHERE VAL(班级)>=25 ORDER BY 英语 desc) t into arra yy
 SELECT MIN(政治) FROM (sele  TOP VAL(thisform.text1.Text) 政治 FROM 高二全年级文 WHERE VAL(班级)>=25 ORDER BY 政治 desc) t into arra zz
 SELECT MIN(历史) FROM (sele  TOP VAL(thisform.text1.Text) 历史 FROM 高二全年级文 WHERE VAL(班级)>=25 ORDER BY 历史 desc) t into arra ls
 SELECT MIN(地理) FROM (sele  TOP VAL(thisform.text1.Text) 地理 FROM 高二全年级文 WHERE VAL(班级)>=25 ORDER BY 地理 desc) t into arra dl
作用是有许多班级查出各班总分及各科前10名的分数,我只能一个查询一个语句想用一个语句实现不知道能否
搜索更多相关主题的帖子: 英语 数学 语文 
2013-10-17 09:20
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
一条语句肯定写不出来,但可以简化代码。用SCAN ENDSCAN可以试试

坚守VFP最后的阵地
2013-10-17 09:35
cxzbzgz
Rank: 8Rank: 8
来 自:云南楚雄
等 级:贵宾
威 望:24
帖 子:295
专家分:805
注 册:2012-6-15
得分:0 
上条语句怎么可以写出来呢?肯定不行

学习交流VFP,QQ:248561326。
2013-10-17 10:16
dzy123
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:379
专家分:820
注 册:2013-4-18
得分:0 
scan 不是很熟悉
2013-10-17 10:29
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
上传数据

坚守VFP最后的阵地
2013-10-17 10:45
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
得分:0 
程序代码:
用union all 连起来,没测试

SELECT MIN(总分) FROM (sele  TOP VAL(thisform.text1.Text) 总分 FROM 高二全年级文 WHERE VAL(班级)>=25 ORDER BY 总分 desc) t into arra zf ;
union all ;
SELECT MIN(语文) FROM (sele  TOP VAL(thisform.text1.Text) 语文 FROM 高二全年级文 WHERE VAL(班级)>=25 ORDER BY 语文 desc) t into arra yw ;
union all ;
SELECT MIN(数学) FROM (sele  TOP VAL(thisform.text1.Text) 数学 FROM 高二全年级文 WHERE VAL(班级)>=25 ORDER BY 数学 desc) t into arra sx ;
union all ;
SELECT MIN(英语) FROM (sele  TOP VAL(thisform.text1.Text) 英语 FROM 高二全年级文 WHERE VAL(班级)>=25 ORDER BY 英语 desc) t into arra yy ;
union all ;
SELECT MIN(政治) FROM (sele  TOP VAL(thisform.text1.Text) 政治 FROM 高二全年级文 WHERE VAL(班级)>=25 ORDER BY 政治 desc) t into arra zz ;
union all ;
SELECT MIN(历史) FROM (sele  TOP VAL(thisform.text1.Text) 历史 FROM 高二全年级文 WHERE VAL(班级)>=25 ORDER BY 历史 desc) t into arra ls ;
union all ;
SELECT MIN(地理) FROM (sele  TOP VAL(thisform.text1.Text) 地理 FROM 高二全年级文 WHERE VAL(班级)>=25 ORDER BY 地理 desc) t into arra dl
2013-10-17 11:29
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
得分:20 
以下是引用dzy123在2013-10-17 09:20:20的发言:

SELECT MIN(总分) FROM (sele  TOP VAL(thisform.text1.Text) 总分 FROM 高二全年级文 WHERE VAL(班级)>=25 ORDER BY 总分 desc) t into arra zf
 SELECT MIN(语文) FROM (sele  TOP VAL(thisform.text1.Text) 语文 FROM 高二全年级文 WHERE VAL(班级)>=25 ORDER BY 语文 desc) t into arra yw
 SELECT MIN(数学) FROM (sele  TOP VAL(thisform.text1.Text) 数学 FROM 高二全年级文 WHERE VAL(班级)>=25 ORDER BY 数学 desc) t into arra sx
 SELECT MIN(英语) FROM (sele  TOP VAL(thisform.text1.Text) 英语 FROM 高二全年级文 WHERE VAL(班级)>=25 ORDER BY 英语 desc) t into arra yy
 SELECT MIN(政治) FROM (sele  TOP VAL(thisform.text1.Text) 政治 FROM 高二全年级文 WHERE VAL(班级)>=25 ORDER BY 政治 desc) t into arra zz
 SELECT MIN(历史) FROM (sele  TOP VAL(thisform.text1.Text) 历史 FROM 高二全年级文 WHERE VAL(班级)>=25 ORDER BY 历史 desc) t into arra ls
 SELECT MIN(地理) FROM (sele  TOP VAL(thisform.text1.Text) 地理 FROM 高二全年级文 WHERE VAL(班级)>=25 ORDER BY 地理 desc) t into arra dl
作用是有许多班级查出各班总分及各科前10名的分数,我只能一个查询一个语句想用一个语句实现不知道能否
看你给出的语句,发现表文件结构有问题,不应该把每门课程作为一个字段,而应该象下图那样组织:

这样,做查询的时候就会方便很多。
不过,无论你如何组织数据,查询出各班总分和查询各科前10名分数都不能写在同一查询语句中。
我正好有一个表文件,与你结构相同,你参考一下吧:

查询总分:SELECT 班级,SUM(语文+数学+英语+自然常识+思想品德) 总分 FROM 二年级成绩 GROUP BY 班级 ORDER BY 班级
查询各班前10名(很复杂,你可以慢慢研究):
SELECT T6.名次,T5.班级,学号,姓名,语文+数学+英语+自然常识+思想品德 总分 ;
   FROM 二年级成绩 T5 ;
      JOIN ;
         (SELECT * FROM ;
             (
SELECT RECNO() 名次, * ;
                 FROM (
SELECT DISTINCT 班级,语文+数学+英语+自然常识+思想品德 总分 ;
                          FROM 二年级成绩 WHERE 班级=[1] ORDER BY 2 DESC
) T1 ;
              UNION ALL ;
              SELECT RECNO() 名次, * ;
                 FROM (
SELECT DISTINCT 班级,语文+数学+英语+自然常识+思想品德 总分 ;
                          FROM 二年级成绩 WHERE 班级=[2] ORDER BY 2 DESC
) T2 ;
              UNION ALL ;
              SELECT RECNO() 名次, * ;
                 FROM (
SELECT DISTINCT 班级,语文+数学+英语+自然常识+思想品德 总分 ;
                          FROM 二年级成绩 WHERE 班级=[3] ORDER BY 2 DESC
) T3) T4 ;
             WHERE 名次<11) T6 ;
   ON T5.班级=T6.班级 AND 语文+数学+英语+自然常识+思想品德=T6.总分 ;
   ORDER BY T5.班级,名次
思路:(1)红色部分分别取出三个班的所有总分,并按由高到低的顺序排列。加关键字“DISTINCT”的目的是为了重复总分的人占相同名次;(2)蓝色部分是为了给每个总分加上名次。加名次的目的是为了方便以名次字段为参考截取前10名;(3)粉色部分用来截取各班前10名的分数;(4)黑色部分通过原表中各门课程相加后的总分与排名表中的总分进行比较,得出各班总分在前10名的学生信息。



[ 本帖最后由 taifu945 于 2013-10-18 09:39 编辑 ]
2013-10-18 09:32



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-422031-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.373915 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved