: 問題一:
: 我想要用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