看板 Database 關於我們 聯絡資訊
請問各位前輩,我有兩個Table: Score、Groups(如下所示) Table: Score +------------+------------+------------+ | StudentID | ScoreA | ScoreB | +------------+------------+------------+ | 1 | 40 | 50 | +------------+------------+------------+ | 2 | 60 | 40 | +------------+------------+------------+ | 3 | 75 | 85 | +------------+------------+------------+ | 4 | 10 | 20 | +------------+------------+------------+ | 5 | 45 | 55 | +------------+------------+------------+ | 6 | 55 | 45 | +------------+------------+------------+ | 7 | 20 | 30 | +------------+------------+------------+ | 8 | 40 | 40 | +------------+------------+------------+ Table: Groups +------------+------------+------------+ | GroupName | ID_START | ID_END | +------------+------------+------------+ | A | 1 | 3 | +------------+------------+------------+ | A | 7 | 8 | +------------+------------+------------+ | B | 4 | 6 | +------------+------------+------------+ 問題一: 我想要用GroupName去列出在這個Group裡面所有學生的成績分數 我的SQL語法如下,如果Groups裡的GroupName是單一筆時,下面SQL語法是work的, 但如果GroupName有兩筆以上時,則無法正常執行, 請各位前輩指點小弟一下,該如何修正? ----------------------------------------------------------- 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`; ------------------------------------------------------------------------- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 36.239.2.134 ※ 編輯: snowfly 來自: 36.239.2.134 (04/14 23:30)