php - how to calculate the sum of grades for each student -


i have 1 table grades of exams, , students (the students table have 10 students only).

i want output array in json format students details sum of grades of each semester in array of array.

expected output

[     {     "id": "1", -> semester id     "student1": {"id": "1","name": "student name", "bio": "50", "chem": "50", "math": "60", "total grades": "160"},     "student2": {"id": "2","name": "secondstudent name", "bio": "60", "chem": "60", "math": "50", "total grades": "170"},     } ] 

here tables structure

tbstudents

   id   ,    name                     1   ,    student name             2   ,    secondstudent name      3   ,    thirdstudent name   

tbgrades

    id   ,  student   ,  semster    ,   bio    ,   chem    ,   math   ,  total      1   ,     1      ,     1       ,   50     ,    50     ,   60     ,   160      2   ,     2      ,     1       ,   30     ,    40     ,   20     ,   90      3   ,     2      ,     1       ,   30     ,    20     ,   30     ,   80 

challenge

how calculate sum of each bio, chem, math, total each student semester, cause student might have multiple grades in same semester

what i've tried

$sql = "select grade.id g_id, grade.semester g_semester, grade.bio g_bio, grade.chem g_chem, grade.math g_math, grade.total g_total, student.id s_id, student.name s_name tbgrades grade inner join tbstudents student on student.id = grade.student";  try {     $db = new db();     $db = $db->connect();     $stmt = $db->prepare($sql);      $stmt->execute();      $grade = $stmt->fetchall(pdo::fetch_obj);      $db = null;      if(empty($grade)) {         $response->getbody()->write         ('         {             "error":             {                 "status":"400",                 "message":"invalid request"             }         }');     } else {          foreach($grade $value) {             $array_resp[]=[                 'id' => $value->g_id,                 'student1' => ['id'=>$value->s_id, 'name'=>$value->s_name, 'bio'=>$value->g_bio, 'chem'=>$value->g_chem, 'math'=>$value->g_math, 'total grades'=>$value->g_total],              ];         }         $response->getbody()->write(json_encode($array_resp));     } } catch(pdoexception $e) {     $response->getbody()->write     ('     {         "error":         {             "message":'. $e->getmessage() .'         }     }'); } 

you can using mysql group by clause.

select  grade.id g_id,  grade.semester g_semester,  sum(grade.bio) g_bio,  sum(grade.chem) g_chem,  sum(grade.math) g_math,  sum(grade.total) g_total,  student.id s_id,  student.name s_name  tbgrades grade  inner join  tbstudents student  on  student.id = grade.student group student.id,  grade.semester 

Comments

Popular posts from this blog

python - Operations inside variables -

Generic Map Parameter java -

arrays - What causes a java.lang.ArrayIndexOutOfBoundsException and how do I prevent it? -