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
committed
-- 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;
SELECT study_groups.ID AS 'GroupID',
study_groups.GroupNum AS 'GroupNum',
PavelBegunkov
committed
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',
faculties.ID AS 'FacultyID',
faculties.Name AS 'FacultyName',
PavelBegunkov
committed
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
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,
teachers.AccountID,
job_positions.ID AS 'JobPositionID',
departments.ID AS 'DepID',
departments.Name AS 'DepName',
faculties.ID AS 'FacultyID',
faculties.Name AS 'FacultyName',
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;
SELECT students.ID AS 'StudentID',
students.LastName,
students.FirstName,
students.SecondName,
students.AccountID,
PavelBegunkov
committed
view_groups_reduced.*
LEFT JOIN `students_groups` ON students_groups.StudentID = students.ID
PavelBegunkov
committed
LEFT JOIN `view_groups_reduced` ON view_groups_reduced.GroupID = students_groups.GroupID;
SELECT disciplines.ID AS 'DisciplineID',
disciplines.AuthorID,
disciplines.ExamType,
disciplines.PracticeCount,
disciplines.LabCount,
disciplines.SemesterID,
disciplines.CompoundDiscID,
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'
FROM `disciplines`
INNER JOIN `subjects` ON subjects.ID = disciplines.SubjectID
INNER JOIN `faculties` ON faculties.ID = disciplines.FacultyID
INNER JOIN `grades` ON grades.ID = disciplines.GradeID
LEFT JOIN `compound_disciplines` ON compound_disciplines.ID = disciplines.CompoundDiscID;
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')
submodules.ID AS 'SubmoduleID',
submodules.Name AS 'SubmoduleName',
submodules.OrderNum AS 'SubmoduleOrderNum',
submodules.MaxRate AS 'SubmoduleRate',
submodules.Type AS 'SubmoduleType', # enum('CurrentControl','LandmarkControl')
LEFT JOIN `submodules` ON submodules.ModuleID = modules.ID;