Skip to content
Snippets Groups Projects
Commit 8fe30595 authored by PavelBegunkov's avatar PavelBegunkov
Browse files

REF: views + 1st revision

parent 40620931
Branches
Tags
No related merge requests found
This source diff could not be displayed because it is too large. You can view the blob instead.
CREATE OR REPLACE VIEW `view_study_groups` AS
SELECT study_groups.ID AS 'GroupID',
study_groups.GroupNum AS 'GroupNum',
study_groups.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',
faculties.Abbr AS 'FacultyAbbr'
FROM `study_groups`
INNER JOIN `specializations` ON study_groups.SpecializationID = specializations.ID
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,
teachers.AccountID,
job_positions.ID AS 'JobPositionID',
job_positions.Name AS 'JobPositionName',
departments.ID AS 'DepID',
departments.Name AS 'DepName',
faculties.ID AS 'FacultyID',
faculties.Name AS 'FacultyName',
faculties.Abbr AS 'FacultyAbbr'
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
SELECT students.ID AS 'StudentID',
students.LastName,
students.FirstName,
students.SecondName,
students.AccountID,
view_study_groups.*
FROM `students`
INNER JOIN `view_study_groups` ON view_study_groups.GroupID = students.StudyGroupID;
CREATE OR REPLACE VIEW `view_disciplines` AS
SELECT disciplines.ID AS 'DisciplineID',
disciplines.AuthorID,
disciplines.ExamType,
disciplines.LectionCount,
disciplines.PracticeCount,
disciplines.LabCount,
disciplines.SemesterID,
disciplines.isLocked,
disciplines.isMilestone,
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'
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;
CREATE OR REPLACE VIEW `view_disciplines_teachers` AS
SELECT view_disciplines.DisciplineID,
view_teachers.*,
(view_disciplines.AuthorID = view_teachers.TeacherID) AS 'IsAuthor'
FROM `view_disciplines`
LEFT JOIN `disciplines_teachers` ON disciplines_teachers.DisciplineID = view_disciplines.DisciplineID
INNER JOIN `view_teachers` ON view_teachers.TeacherID = disciplines_teachers.TeacherID;
CREATE OR REPLACE VIEW `view_disciplines_students` AS
SELECT disciplines_students.DisciplineID,
view_students.*
FROM `disciplines_students`
INNER JOIN `view_students` ON view_students.StudentID = disciplines_students.StudentID
WHERE disciplines_students.Type = 'attach'
UNION DISTINCT
SELECT disciplines_groups.DisciplineID,
view_students.*
FROM `disciplines_groups`
LEFT JOIN `view_students` ON view_students.GroupID = disciplines_groups.StudyGroupID
LEFT JOIN `disciplines_students` ON disciplines_students.StudentID = view_students.StudentID AND
disciplines_students.DisciplineID = disciplines_groups.DisciplineID
WHERE disciplines_students.Type IS NULL;
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')
submodules.isUsed AS 'SubmoduleIsUsed'
FROM `submodules`
INNER JOIN `modules` ON submodules.ModuleID = modules.ID;
CREATE OR REPLACE VIEW `view_rating` AS
SELECT view_students.*,
view_roadmap.*,
rating_table.Rate,
rating_table.Date,
rating_table.TeacherID
FROM `view_roadmap`
LEFT JOIN `rating_table` ON rating_table.SubmoduleID = view_roadmap.SubmoduleID
INNER JOIN `view_students` ON rating_table.StudentID = view_students.StudentID;
CREATE OR REPLACE VIEW `view_rating_result` AS
SELECT view_rating.StudentID,
view_rating.DisciplineID,
SUM(view_rating.Rate*(view_rating.ModuleType = "regular")) AS 'RateRegular',
SUM(view_rating.Rate*(view_rating.ModuleType = "extra")) AS 'RateExtra',
SUM(view_rating.Rate*(view_rating.ModuleType = "bonus")) AS 'RateBonus',
(SELECT view_rating.Rate*(view_rating.ModuleType = "exam")
ORDER BY view_rating.ModuleType = "exam" DESC,
(view_rating.Rate IS NULL) ASC,
view_rating.SubmoduleOrderNum DESC
LIMIT 1
) AS 'RateExam'
FROM `view_rating`
WHERE view_rating.Rate IS NOT NULL
GROUP BY view_rating.StudentID, view_rating.DisciplineID;
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment