作者arkcsl (米斯特・亚克)
看板Database
标题Re: [SQL ] SQL语法问题(MySQL)
时间Tue Apr 16 13:38:48 2013
: 问题一:
: 我想要用GroupName去列出在这个Group里面所有学生的成绩分数
: 我的SQL语法如下,如果Groups里的GroupName是单一笔时,下面SQL语法是work的,
: 但如果GroupName有两笔以上时,则无法正常执行,
: 请各位前辈指点小弟一下,该如何修正?
正常来说group name应该是要unique才是。
既然ID区间不同,为什麽要取一样的名称呢?
会异常的原因是因为你的select会得到超过一个以上的回传值,
如果你的group name一定要一样,你要先想办法把两个以上转换成只有一个回传值
: -----------------------------------------------------------
: SELECT * FROM `Score` WHERE
: `StudentID` BETWEEN
: (SELECT `ID_START` FROM `Groups` WHERE `GroupName`='A')
: AND
: (SELECT `ID_END` FROM `Groups` WHERE `GroupName`='A')
: ;
: -----------------------------------------------------------
: 问题二:
: 我想要用GroupName去统计在每个Group里面的学生ScoreA分数总和ScoreB分数总和
: 我的SQL语法如下,不知道是否各位前辈是否有更好的SQL语法?
: -------------------------------------------------------------------------
: SELECT `Groups`.`GroupName`,SUM(`Score`.`ScoreA`),SUM(`Score`.`ScoreB`)
: FROM `Score`,`Groups` WHERE
: `Score`.`StudentID` BETWEEN `Groups`.`ID_START` AND `Groups`.`ID_END`
: GROUP BY `Groups`.`GroupName`;
: -------------------------------------------------------------------------
既然是用group name为单位,为什麽不要直接join两个table呢?
然後最後再SUM,但是如果依照你的group table来看,你没有办法区分两个A group
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 108.0.11.194