== UC009 - Приказ на студенти по предмет '''Иницијален актер:''' Професор '''Други актери:''' - Професорот сака да ги види студентите запишани на предметите кои ги предава, групирани по предмет, заедно со тековната оценка на секој студент. Целта е преглед од кој може да премине кон оценување. === Сценарио 1. Професорот се најавува и избира '''Студенти''' од менито. 2. Системот го чита идентификаторот на професорот од пристапниот токен и ги презема сите студенти на неговите предмети. Студентот се добива преку запишаниот семестар, а оценката е LEFT JOIN бидејќи најголем дел од студентите сè уште немаат оценка. {{{#!sql SELECT s.id AS subject_id, s.code, s.name AS subject, u.id AS student_id, u."index", u.name || ' ' || u.surname AS student, ps.grade, a.year, a.type FROM project.semesters_subjects ss JOIN project.enrolled_semesters es ON es.id = ss.enrolled_semesters_id JOIN project.users u ON u.id = es.user_id JOIN project.subjects s ON s.id = ss.subjects_id JOIN project.active_semesters a ON a.id = es.semester_id LEFT JOIN project.passed_subjects ps ON ps.enrolled_id = ss.id WHERE ss.professor_id = 4 ORDER BY s.name, u.surname; }}} 3. Системот ги групира редовите по предмет и ја прикажува табелата со студент, индекс, предмет, семестар и тековна оценка. Студентите без оценка се прикажани со ознака дека сè уште не се оценети. 4. Професорот по желба филтрира по предмет или пребарува по индекс на студент. 5. Професорот избира студент за да внесе или измени оценка, со што се преминува на [wiki:UseCase010 UC010] или [wiki:UseCase011 UC011]. === Забелешки * Условот ss.professor_id = 4 е и проверка на овластување: професорот ги добива само студентите на своите предмети, бидејќи филтрирањето се врши во самата база, а не во апликацијата. * Во моделот semesters_subjects нема директна врска кон студентот, па студентот се добива преку enrolled_semesters.user_id.