PHP 板


LINE

看板 PHP  RSS
目前有个成绩表会记录300个学生每天的成绩 目前我想做像下方这样呈现 学生姓名 成绩为几天新高分 学生A 5 学生B 32 学生C 18 学生D 3 ............................ 请问大家这样会如何做到上述的结果呢? 初步我是想说用回圈跑三百个学生 而每个学生又再从最近的日期开始往前推去跑回圈判读如下 do{ $sql="SELECT nameid FROM (SELECT grade, nameid FROM gradelist where nameid=回圈学生id and kdate=今天) a1 LEFT JOIN (SELECT MAX(grade) as MaxGrade, nameid FROM gradelist where nameid=回圈学生id and kdate<=今天 and kdate>=每天日期 group by nameid) a2 ON a1.nameid=a2.nameid where a1.grade=ab2.MaxGrade"; }while(所有学生的回圈); 当选出来为0笔的时候就终止回圈,代表已经找到某学生成绩为几天的新高 然後再跑下一位学生的数据 感觉是不太聪明的做法,因为假设日期有300天好了 这样回圈就要跑300学生*300天=9000个 不晓得是否有其他的做法可以做得到呢? --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 182.235.190.240
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/PHP/M.1449359289.A.252.html
1F:推 ns1234: group by user order by date desc? 12/06 12:00
2F:→ ns1234: 啊 where要判断q日期 12/06 12:01
3F:→ ns1234: 上面那句q 是多得 手机推文抱歉 12/06 12:01
※ 编辑: jami520 (182.235.190.240), 12/06/2015 12:23:14
4F:→ jami520: 刚写得又修改了一下,应该是里面是跑所有学生的回圈判断 12/06 12:23
5F:→ jami520: 当笔数为0的时候则是代表有找到,然後可存到资料库中 12/06 12:25
6F:→ jami520: 这是初步想到的方法,只是想说有否更好更快速的方式 12/06 12:25
7F:推 ns1234: 最外层跑每个学生没问题,里面 sql我只下了 12/06 19:53
8F:→ ns1234: Select * from grade_list where create_time> '指定日期' 12/06 19:54
9F:→ ns1234: and user_no= $iUserNo ORDER BY grade DESC LIMIT 1 12/06 19:55
10F:→ ns1234: 这样查询的次数是学生的数量 同样找不到就是其间没有分数 12/06 19:56
11F:推 ns1234: 不知道是不是你想问的答案(上面中间sql太复杂我看不懂 12/06 20:00
12F:→ jami520: 但以一位学生来说,如何知道最近一天的成绩是往前推的几 12/06 22:59
13F:→ jami520: 天新高分呢? 12/06 23:00
14F:推 ns1234: "往前推几天新高分"是指 最後一次输入的成绩是否是新高分? 12/06 23:12
15F:→ jami520: 假设最近五天分数为 89/67/55/93/72 那麽最近一天的89分 12/07 12:38
16F:→ jami520: 为近三天新高分,我想要得到的就是3天这个结果,包含所有 12/07 12:39
17F:→ jami520: 学生的这个资料,因此我上面才会这样写,只是不知有否 12/07 12:39
18F:→ jami520: 更好的方式吗? 12/07 12:39
19F:推 ns1234: where createdate < -3天 order by grade, 不就可以只列 12/07 12:52
20F:→ ns1234: 出三天内的所有成绩,再排序挑最高分 12/07 12:52
21F:→ jami520: 重点是一开始不知道是3天,所以跑学生回圈之外,内部还要 12/07 13:03
22F:→ jami520: 跑日期回圈,从最近往前跑,因为每个学生新高天数不同啊 12/07 13:04
23F:推 ns1234: 等等。你的时间是每个人都一样,还是每个都不一样? 12/07 13:11
24F:推 ns1234: 我好像突然了解你要问什麽了 12/07 13:13
25F:→ jami520: 每个人时间都是不一样的,所以我才会列上面那个范例列表 12/07 13:17
26F:→ JustGame: select d.nameid, count(d.id) from gradelist d, (sele 12/07 23:09
27F:→ JustGame: ct max(a.id) id, a.nameid from gradelist a, (select 12/07 23:10
28F:→ JustGame: id, nameid, grade from gradelist where kdate=今天) b 12/07 23:10
29F:→ JustGame: where a.nameid=b.nameid and a.grade >= b.grade grou 12/07 23:11
30F:→ JustGame: p by a.nameid) c where d.nameid = c.nameid and d.id< 12/07 23:12
31F:→ JustGame: = c.id group by d.nameid 12/07 23:12
32F:→ JustGame: c 的 where 少了一个 a.kdate < 今天 12/07 23:14
33F:→ xdraculax: mysql 现在也可以写预存程序 storep什麽的 12/08 16:39
34F:→ ns1234: 如果写暂存或是标flag会不会比较快啊?标记在最後一次新高 12/08 22:46
35F:→ jami520: 感谢各位大大的回覆,多了些方法可以学习测试一下,谢谢! 12/11 14:02
36F:推 ChenCH1986: 我的建议是直接开另外一张表来储存学生是几天新高的 12/17 09:43
37F:→ ChenCH1986: 透过trigger去控制更新那一张储存几天新高的表格 12/17 09:44
38F:→ ChenCH1986: 否则针对那麽庞大的资料, 每次捞取都得跑一次, 很容易 12/17 09:44
39F:→ ChenCH1986: 造成伺服器负担 12/17 09:44







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Tech_Job站内搜寻

TOP