Skip to content
Snippets Groups Projects
views.sql 6.05 KiB
Newer Older
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

DROP VIEW IF EXISTS view_disciplines_teachers;
DROP VIEW IF EXISTS `view_disciplines_students`;
DROP VIEW IF EXISTS `view_rating_result`;
PavelBegunkov's avatar
PavelBegunkov committed
DROP VIEW IF EXISTS view_disciplines_results;
-- todo: remove max year crutch - add return (year, groupID, ...), use view_groups
CREATE OR REPLACE VIEW `view_groups_reduced` AS
    SELECT  study_groups.ID         AS 'GroupID',
            study_groups.GroupNum   AS 'GroupNum',
            groups_years.Name       AS 'GroupName',
            grades.ID               AS 'GradeID',
            grades.Num              AS 'GradeNum',
            grades.Degree           AS 'Degree',
            specializations.ID      AS 'SpecID',
            specializations.Name    AS 'SpecName',
            specializations.Abbr    AS 'SpecAbbr',
            specializations.Code    AS 'SpecCode',
            faculties.ID        AS 'FacultyID',
            faculties.Name      AS 'FacultyName',
            faculties.Abbr      AS 'FacultyAbbr'
        FROM groups_years
        LEFT JOIN groups_years as t ON groups_years.GroupID = t.GroupID AND groups_years.Year < t.Year
        INNER JOIN study_groups ON groups_years.GroupID = study_groups.ID
        INNER JOIN `specializations` ON groups_years.SpecializationID = specializations.ID
        INNER JOIN `grades` ON study_groups.GradeID = grades.ID
        INNER JOIN `faculties` ON faculties.ID = specializations.FacultyID
        WHERE t.GroupID IS NULL;
CREATE OR REPLACE VIEW `view_groups` AS
PavelBegunkov's avatar
PavelBegunkov committed
    SELECT  study_groups.ID         AS 'GroupID',
            study_groups.GroupNum   AS 'GroupNum',
PavelBegunkov's avatar
PavelBegunkov committed
            grades.ID               AS 'GradeID',
            grades.Num              AS 'GradeNum',
            grades.Degree           AS 'Degree',
            specializations.ID      AS 'SpecID',
            specializations.Name    AS 'SpecName',
            specializations.Abbr    AS 'SpecAbbr',
PavelBegunkov's avatar
PavelBegunkov committed
            specializations.Code    AS 'SpecCode',
            faculties.ID        AS 'FacultyID',
            faculties.Name      AS 'FacultyName',
            faculties.Abbr      AS 'FacultyAbbr',
            groups_years.Year
        FROM groups_years
        INNER JOIN study_groups ON groups_years.GroupID = study_groups.ID
        INNER JOIN `specializations` ON groups_years.SpecializationID = specializations.ID
PavelBegunkov's avatar
PavelBegunkov committed
        INNER JOIN `grades` ON study_groups.GradeID = grades.ID
        INNER JOIN `faculties` ON faculties.ID = specializations.FacultyID;
CREATE OR REPLACE VIEW `view_teachers` AS
    SELECT  teachers.ID         AS 'TeacherID',
            teachers.LastName,
            teachers.FirstName,
            teachers.SecondName,
PavelBegunkov's avatar
PavelBegunkov committed
            teachers.AccountID,
            job_positions.ID    AS 'JobPositionID',
            job_positions.Name  AS 'JobPositionName',
PavelBegunkov's avatar
PavelBegunkov committed
            departments.ID      AS 'DepID',
            departments.Name    AS 'DepName',
            faculties.ID        AS 'FacultyID',
            faculties.Name      AS 'FacultyName',
PavelBegunkov's avatar
PavelBegunkov committed
            faculties.Abbr      AS 'FacultyAbbr'
PavelBegunkov's avatar
PavelBegunkov committed
        FROM `teachers`
        INNER JOIN `departments`    ON  departments.ID = teachers.DepartmentID
        INNER JOIN `faculties`      ON  departments.FacultyID = faculties.ID
        INNER JOIN `job_positions`  ON  job_positions.ID = teachers.JobPositionID;
CREATE OR REPLACE VIEW `view_students` AS
PavelBegunkov's avatar
PavelBegunkov committed
    SELECT  students.ID         AS 'StudentID',
            students.LastName,
            students.FirstName,
            students.SecondName,
            students.AccountID,
PavelBegunkov's avatar
PavelBegunkov committed
            students_groups.SemesterID,
PavelBegunkov's avatar
PavelBegunkov committed
        FROM `students`
PavelBegunkov's avatar
PavelBegunkov committed
        LEFT JOIN `students_groups` ON students_groups.StudentID = students.ID
        LEFT JOIN `view_groups_reduced` ON view_groups_reduced.GroupID = students_groups.GroupID;
CREATE OR REPLACE VIEW `view_disciplines` AS
PavelBegunkov's avatar
PavelBegunkov committed
    SELECT  disciplines.ID          AS 'DisciplineID',
            disciplines.AuthorID,
            disciplines.ExamType,
PavelBegunkov's avatar
PavelBegunkov committed
            disciplines.LectureCount,
PavelBegunkov's avatar
PavelBegunkov committed
            disciplines.PracticeCount,
            disciplines.LabCount,
            disciplines.SemesterID,
xamgore's avatar
xamgore committed
            disciplines.IsLocked,
PavelBegunkov's avatar
PavelBegunkov committed
            disciplines.Milestone,
xamgore's avatar
xamgore committed
            disciplines.Subtype,
            disciplines.CompoundDiscID,
PavelBegunkov's avatar
PavelBegunkov committed
            disciplines.MaxRate,
            disciplines.CurRate,
PavelBegunkov's avatar
PavelBegunkov committed
            grades.ID               AS 'GradeID',
            grades.Num              AS 'GradeNum',
            grades.Degree,
            subjects.ID             AS 'SubjectID',
            subjects.Name           AS 'SubjectName',
            subjects.Abbr           AS 'SubjectAbbr',
            faculties.ID            AS 'FacultyID',
            faculties.Name          AS 'FacultyName',
            faculties.Abbr          AS 'FacultyAbbr',
            compound_disciplines.Name AS 'CompoundDiscName'
PavelBegunkov's avatar
PavelBegunkov committed
        FROM `disciplines`
        INNER JOIN `subjects` ON subjects.ID = disciplines.SubjectID
        INNER JOIN `faculties` ON faculties.ID = disciplines.FacultyID
dmitry.sviridkin's avatar
dmitry.sviridkin committed
        INNER JOIN `grades` ON grades.ID = disciplines.GradeID
dmitry.sviridkin's avatar
dmitry.sviridkin committed
        LEFT JOIN `compound_disciplines` ON compound_disciplines.ID = disciplines.CompoundDiscID;
PavelBegunkov's avatar
PavelBegunkov committed




CREATE OR REPLACE VIEW `view_roadmap` AS
    SELECT  modules.DisciplineID,
            modules.ID AS 'ModuleID',
            modules.Name AS 'ModuleName',
            modules.OrderNum AS 'ModuleOrderNum',
            modules.Type AS 'ModuleType', # enum('regular','exam', 'bonus', 'extra')
PavelBegunkov's avatar
PavelBegunkov committed
            submodules.ID AS 'SubmoduleID',
            submodules.Name AS 'SubmoduleName',
            submodules.OrderNum AS 'SubmoduleOrderNum',
            submodules.MaxRate AS 'SubmoduleRate',
            submodules.Type AS 'SubmoduleType', # enum('CurrentControl','LandmarkControl')
PavelBegunkov's avatar
PavelBegunkov committed
            submodules.IsUsed AS 'SubmoduleIsUsed'
PavelBegunkov's avatar
PavelBegunkov committed
        FROM `modules`
        LEFT JOIN `submodules` ON submodules.ModuleID = modules.ID;