| Version 2 (modified by , 2 weeks ago) ( diff ) |
|---|
UC005 - Приказ на предмети по семестар
Иницијален актер: Студент
Други актери: -
Студентот сака да ги види предметите кои ги слуша во одреден запишан семестар, со професорот, кредитите, потписот и оценката доколку предметот е положен.
Сценарио
- Студентот ја отвора страницата Предмети или избира семестар од UC004.
- Системот ги презема предметите на избраниот запишан семестар. Оценката е LEFT JOIN, бидејќи предметите кои сè уште не се положени немаат ред во passed_subjects.
SELECT s.code, s.name AS subject, s.awarded_credits, ss.signature, p.name || ' ' || p.surname AS professor, ps.grade, ps.date_passed FROM project.semesters_subjects ss JOIN project.subjects s ON s.id = ss.subjects_id JOIN project.users p ON p.id = ss.professor_id LEFT JOIN project.passed_subjects ps ON ps.enrolled_id = ss.id WHERE ss.enrolled_semesters_id = 1 ORDER BY s.name;
- Системот го пресметува бројот на потписи и освоените кредити во тој семестар.
SELECT count(*) FILTER (WHERE ss.signature) AS signatures, count(*) AS total_subjects, coalesce(sum(s.awarded_credits) FILTER (WHERE ps.id IS NOT NULL), 0) AS earned_credits FROM project.semesters_subjects ss JOIN project.subjects s ON s.id = ss.subjects_id LEFT JOIN project.passed_subjects ps ON ps.enrolled_id = ss.id WHERE ss.enrolled_semesters_id = 1;
- Системот ја прикажува табелата со предметите и резимето со потписи и кредити.
Забелешки
- Ограничувањето UNIQUE (enrolled_semesters_id, subjects_id) гарантира дека ист предмет не може да се појави двапати во ист запишан семестар.
- Предуслови за предметите се чуваат во dependency_subject и можат да се прикажат дополнително.
Note:
See TracWiki
for help on using the wiki.
