看板 Database 關於我們 聯絡資訊
: 問題一: : 我想要用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