From de469bc17b5fbcc4c8dc1aa5e29538f93c09fbf5 Mon Sep 17 00:00:00 2001 From: PavelBegunkov <asml.Silence@gmail.com> Date: Mon, 16 Feb 2015 00:20:12 +0300 Subject: [PATCH] REF: comments --- db/StoredFunctions.sql | 36 ++--- db/StoredProcedures.sql | 340 +++++++++++++++++----------------------- db/Views.sql | 8 +- 3 files changed, 165 insertions(+), 219 deletions(-) diff --git a/db/StoredFunctions.sql b/db/StoredFunctions.sql index ed30f575d..2340aec60 100644 --- a/db/StoredFunctions.sql +++ b/db/StoredFunctions.sql @@ -26,13 +26,10 @@ CREATE FUNCTION `InternalIsMapLocked` (`pDisciplineID` INT) RETURNS BOOLEAN NO SQL BEGIN - DECLARE vChecker boolean DEFAULT -1; - - SELECT disciplines.isLocked INTO vChecker - FROM `disciplines` - WHERE pDisciplineID = disciplines.ID - LIMIT 1; - RETURN ( vChecker > 0 ); + RETURN EXISTS( + SELECT * FROM `disciplines` + WHERE disciplines.ID = pDisciplineID AND disciplines.isLocked = 1 + ); END // @@ -446,7 +443,7 @@ BEGIN LIMIT 1; IF (ROW_COUNT() = 0) THEN - RETURN -2; + RETURN -2; # account with this Code not found END IF; RETURN @vAccountID; END // @@ -680,7 +677,7 @@ BEGIN END // -# TODO: ?#$@! magic + DROP FUNCTION IF EXISTS CreateStudentEx// CREATE FUNCTION `CreateStudentEx` ( `pLastName` VARCHAR(30) CHARSET utf8, @@ -821,7 +818,6 @@ CREATE FUNCTION `ChangeDisciplineSubject` ) RETURNS int(11) NO SQL BEGIN - DECLARE vChecker INT; DECLARE EXIT HANDLER FOR SQLEXCEPTION RETURN -1; IF NOT InternalIsTeacherAuthor(pTeacherID, pDisciplineID) OR @@ -845,7 +841,7 @@ CREATE FUNCTION `ChangeDisciplineGrade` ) RETURNS int(11) NO SQL BEGIN - DECLARE vChecker INT DEFAULT -1; + DECLARE vCurGradeID INT DEFAULT -1; DECLARE EXIT HANDLER FOR SQLEXCEPTION RETURN -1; IF InternalIsMapLocked(pDisciplineID) OR @@ -854,18 +850,22 @@ BEGIN RETURN -1; END IF; - SELECT disciplines.GradeID INTO vChecker + # get current grade + SELECT disciplines.GradeID INTO vCurGradeID FROM `disciplines` WHERE disciplines.ID = pDisciplineID LIMIT 1; - - IF vChecker != pGradeID THEN - DELETE FROM `disciplines_groups` - WHERE disciplines_groups.DisciplineID = pDisciplineID; - DELETE FROM `disciplines_students` - WHERE disciplines_students.DisciplineID = pDisciplineID; + IF vCurGradeID = pGradeID THEN + RETURN 0; END IF; + # delete all students + DELETE FROM `disciplines_groups` + WHERE disciplines_groups.DisciplineID = pDisciplineID; + DELETE FROM `disciplines_students` + WHERE disciplines_students.DisciplineID = pDisciplineID; + + # set grade UPDATE `disciplines` SET disciplines.GradeID = pGradeID WHERE disciplines.ID = pDisciplineID diff --git a/db/StoredProcedures.sql b/db/StoredProcedures.sql index bcf338303..12568e83a 100644 --- a/db/StoredProcedures.sql +++ b/db/StoredProcedures.sql @@ -355,8 +355,7 @@ CREATE PROCEDURE `SearchTeachers` NO SQL BEGIN DECLARE vAuthorID INT DEFAULT -1; - SELECT disciplines.AuthorID - INTO vAuthorID + SELECT disciplines.AuthorID INTO vAuthorID FROM `disciplines` WHERE disciplines.ID = pDisciplineID LIMIT 1; @@ -370,12 +369,8 @@ BEGIN view_teachers.DepName, (view_teachers.TeacherID = vAuthorID) AS 'IsAuthor' FROM `view_teachers` - WHERE NOT EXISTS( SELECT disciplines_teachers.ID - FROM `disciplines_teachers` - WHERE disciplines_teachers.TeacherID = view_teachers.TeacherID AND - disciplines_teachers.DisciplineID = pDisciplineID) AND - (pDepartmentID = 0 OR pDepartmentID = view_teachers.DepID ) AND - pFacultyID = view_teachers.FacultyID AND + WHERE InternalIsTeacherBounded(view_teachers.TeacherID, pDisciplineID) AND + view_teachers.FacultyID = pFacultyID AND CONCAT( view_teachers.LastName, view_teachers.FirstName, view_teachers.SecondName) LIKE CONCAT('%', pFullName, '%') ORDER BY view_teachers.FacultyID ASC,view_teachers.DepName ASC, @@ -392,7 +387,7 @@ DROP PROCEDURE IF EXISTS GetStudents// CREATE PROCEDURE `GetStudents` (IN `pGroupID` INT) NO SQL BEGIN - SELECT view_students.StudentID AS 'ID', + SELECT view_students.StudentID AS 'ID', view_students.LastName, view_students.FirstName, view_students.SecondName, @@ -413,7 +408,7 @@ CREATE PROCEDURE `GetStudentsByFaculty` ( IN `pFacultyID` INT ) NO SQL BEGIN - SELECT view_students.StudentID AS 'ID', + SELECT view_students.StudentID AS 'ID', view_students.LastName, view_students.FirstName, view_students.SecondName, @@ -435,61 +430,61 @@ CREATE PROCEDURE `SearchStudents` ( IN `pGradeID` INT, IN `pGroupID` INT, IN `pFacultyID` INT, IN `pFullName` VARCHAR(100) CHARSET utf8, IN `pDisciplineID` INT) -NO SQL - BEGIN - SELECT view_students.StudentID AS 'ID', - view_students.LastName, - view_students.FirstName, - view_students.SecondName, - view_students.GradeID, - view_students.GradeNum, - view_students.Degree, - view_students.GroupID, - view_students.GroupNum - FROM `view_students` - LEFT JOIN `disciplines_students` ON disciplines_students.StudentID = view_students.StudentID AND - disciplines_students.DisciplineID = pDisciplineID - LEFT JOIN `disciplines_groups` ON disciplines_groups.GroupID = view_students.GroupID AND - disciplines_groups.DisciplineID = pDisciplineID - WHERE view_students.FacultyID = pFacultyID AND - view_students.GradeID = pGradeID AND - (view_students.GroupID = pGroupID OR pGroupID = 0) AND - CONCAT(view_students.LastName, view_students.FirstName, view_students.SecondName) + NO SQL +BEGIN + SELECT view_students.StudentID AS 'ID', + view_students.LastName, + view_students.FirstName, + view_students.SecondName, + view_students.GradeID, + view_students.GradeNum, + view_students.Degree, + view_students.GroupID, + view_students.GroupNum + FROM `view_students` + LEFT JOIN `disciplines_students` ON disciplines_students.StudentID = view_students.StudentID AND + disciplines_students.DisciplineID = pDisciplineID + LEFT JOIN `disciplines_groups` ON disciplines_groups.GroupID = view_students.GroupID AND + disciplines_groups.DisciplineID = pDisciplineID + WHERE view_students.FacultyID = pFacultyID AND + view_students.GradeID = pGradeID AND + (view_students.GroupID = pGroupID OR pGroupID = 0) AND + CONCAT(view_students.LastName, view_students.FirstName, view_students.SecondName) LIKE CONCAT('%', pFullName, '%') AND - disciplines_groups.ID IS NULL AND - (disciplines_students.Type IS NULL OR disciplines_students.Type != 'attach') - ORDER BY view_students.GradeID ASC, - view_students.GroupID ASC; - END // + disciplines_groups.ID IS NULL AND + (disciplines_students.Type IS NULL OR disciplines_students.Type != 'attach') + ORDER BY view_students.GradeID ASC, + view_students.GroupID ASC; +END // # TODO: --TeacherID param # TODO: only this procedure -# all students takes that course or detached +# all students in general groups, that take course (with detached) DROP PROCEDURE IF EXISTS GetStudentsForDiscipline// CREATE PROCEDURE `GetStudentsForDiscipline` ( IN `pTeacherID` INT, IN `pDisciplineID` INT) -NO SQL - BEGIN - SELECT view_disciplines_students.StudentID AS 'ID', - view_disciplines_students.LastName, - view_disciplines_students.FirstName, - view_disciplines_students.SecondName, - view_disciplines_students.GradeID, - view_disciplines_students.GradeNum, - view_disciplines_students.Degree, - view_disciplines_students.GroupID, - view_disciplines_students.GroupNum, - view_disciplines_students.AttachType AS 'AttachType' - FROM `view_disciplines_students` - WHERE view_disciplines_students.DisciplineID = pDisciplineID - ORDER BY (view_disciplines_students.AttachType IS NULL OR - view_disciplines_students.AttachType = 'detach') DESC, - view_disciplines_students.GradeID ASC, - view_disciplines_students.GroupNum ASC, - view_disciplines_students.LastName ASC, - view_disciplines_students.FirstName ASC; - END // + NO SQL +BEGIN + SELECT view_disciplines_students.StudentID AS 'ID', + view_disciplines_students.LastName, + view_disciplines_students.FirstName, + view_disciplines_students.SecondName, + view_disciplines_students.GradeID, + view_disciplines_students.GradeNum, + view_disciplines_students.Degree, + view_disciplines_students.GroupID, + view_disciplines_students.GroupNum, + view_disciplines_students.AttachType AS 'AttachType' + FROM `view_disciplines_students` + WHERE view_disciplines_students.DisciplineID = pDisciplineID + ORDER BY (view_disciplines_students.AttachType IS NULL OR + view_disciplines_students.AttachType = 'detach') DESC, + view_disciplines_students.GradeID ASC, + view_disciplines_students.GroupNum ASC, + view_disciplines_students.LastName ASC, + view_disciplines_students.FirstName ASC; +END // # TODO: --TeacherID param @@ -497,28 +492,27 @@ NO SQL DROP PROCEDURE IF EXISTS GetStudentsForRating// CREATE PROCEDURE `GetStudentsForRating` ( IN `TeacherID` INT, IN `pDisciplineID` INT) -NO SQL - BEGIN - SELECT view_disciplines_students.StudentID AS 'ID', - view_disciplines_students.LastName, - view_disciplines_students.FirstName, - view_disciplines_students.SecondName, - view_disciplines_students.GradeID, - view_disciplines_students.GradeNum, - view_disciplines_students.Degree, - view_disciplines_students.GroupID, - view_disciplines_students.GroupNum, - (view_disciplines_students.AttachType IS NOT NULL AND - view_disciplines_students.AttachType = 'attach') AS 'IsAttached' - FROM `view_disciplines_students` - WHERE view_disciplines_students.DisciplineID = pDisciplineID AND - (view_disciplines_students.AttachType IS NULL OR - view_disciplines_students.AttachType = 'attach') - ORDER BY view_disciplines_students.GradeID ASC, - view_disciplines_students.GroupNum ASC, - view_disciplines_students.LastName ASC, - view_disciplines_students.FirstName ASC; - END // + NO SQL +BEGIN + SELECT view_disciplines_students.StudentID AS 'ID', + view_disciplines_students.LastName, + view_disciplines_students.FirstName, + view_disciplines_students.SecondName, + view_disciplines_students.GradeID, + view_disciplines_students.GradeNum, + view_disciplines_students.Degree, + view_disciplines_students.GroupID, + view_disciplines_students.GroupNum, + (view_disciplines_students.AttachType IS NOT NULL) AS 'IsAttached' + FROM `view_disciplines_students` + WHERE view_disciplines_students.DisciplineID = pDisciplineID AND + (view_disciplines_students.AttachType IS NULL OR + view_disciplines_students.AttachType = 'attach') + ORDER BY view_disciplines_students.GradeID ASC, + view_disciplines_students.GroupNum ASC, + view_disciplines_students.LastName ASC, + view_disciplines_students.FirstName ASC; +END // @@ -528,7 +522,8 @@ NO SQL # Label: disciplines # ------------------------------------------------------------------------------------------- - +# TODO: haven't reference on it +# all disciplines for faculty in current semester DROP PROCEDURE IF EXISTS GetDisciplines// CREATE PROCEDURE `GetDisciplines` ( IN `pFacultyID` INT ) NO SQL @@ -537,7 +532,7 @@ BEGIN view_disciplines.SubjectID, view_disciplines.SubjectName, view_disciplines.ExamType, - (view_disciplines_results.DisciplineRateMax = 100) + (view_disciplines_results.DisciplineRateMax = 100) AS 'IsMapCreated' FROM `view_disciplines` INNER JOIN `view_disciplines_results` ON view_disciplines_results.DisciplineID = view_disciplines.DisciplineID @@ -548,12 +543,13 @@ END // -# variant 2 +# processed format of output (after desequentialization) +# discipline1 {group1, group2, ...}, discipline2 {groupN, ...}, ... DROP PROCEDURE IF EXISTS GetDisciplinesForTeacher// CREATE PROCEDURE `GetDisciplinesForTeacher`(IN `pTeacherID` INT) NO SQL BEGIN - SELECT DISTINCT view_disciplines.DisciplineID AS 'ID', + SELECT DISTINCT view_disciplines.DisciplineID AS 'ID', view_disciplines.ExamType, view_disciplines.GradeID, view_disciplines.GradeNum, @@ -568,9 +564,10 @@ BEGIN view_disciplines.IsLocked FROM `disciplines_teachers` LEFT JOIN `disciplines_groups` ON disciplines_groups.DisciplineID = disciplines_teachers.DisciplineID + # left -> inner join with maybe NULL ? LEFT JOIN `view_groups` ON view_groups.GroupID = disciplines_groups.GroupID INNER JOIN `view_disciplines` ON disciplines_teachers.DisciplineID = view_disciplines.DisciplineID - LEFT JOIN `view_disciplines_results` ON view_disciplines_results.DisciplineID = view_disciplines.DisciplineID + INNER JOIN `view_disciplines_results` ON view_disciplines_results.DisciplineID = view_disciplines.DisciplineID WHERE disciplines_teachers.TeacherID = pTeacherID AND view_disciplines.SemesterID = @CurrentSemesterID ORDER BY view_disciplines.GradeID ASC, @@ -580,7 +577,7 @@ BEGIN END // -# TODO: slowpoke +# TODO: check this, review this DROP PROCEDURE IF EXISTS GetDisciplinesForStudent// CREATE PROCEDURE `GetDisciplinesForStudent`(IN `pStudentID` INT) NO SQL @@ -609,7 +606,39 @@ BEGIN END // +# get all disciplines for group, including disciplines, where students have attached status +DROP PROCEDURE IF EXISTS GetDisciplinesForGroup// +CREATE PROCEDURE `GetDisciplinesForGroup`(IN `pGroupID` INT) + NO SQL +BEGIN + (SELECT view_disciplines.DisciplineID, + view_disciplines.SubjectName, + view_disciplines.ExamType + FROM `disciplines_groups` + INNER JOIN `view_disciplines` ON view_disciplines.DisciplineID = disciplines_groups.DisciplineID + WHERE disciplines_groups.GroupID = pGroupID + ) UNION DISTINCT + (SELECT view_disciplines.DisciplineID, + view_disciplines.SubjectName, + view_disciplines.ExamType + FROM `disciplines_students` + INNER JOIN `students` ON disciplines_students.StudentID = students.ID + INNER JOIN `view_disciplines` ON view_disciplines.DisciplineID = disciplines_students.DisciplineID + WHERE students.GroupID = pGroupID + ); +END // + + + + + + + + +# TODO: kill view_rating +# TODO: slowpoke +# TODO: rename GetRatesForStudent DROP PROCEDURE IF EXISTS GetMapForStudent// CREATE PROCEDURE `GetMapForStudent` ( IN `pStudentID` INT, IN `pDisciplineID` INT) @@ -657,28 +686,7 @@ BEGIN END // -DROP PROCEDURE IF EXISTS GetMapForStudentExam// -CREATE PROCEDURE `GetMapForStudentExam` - ( IN `pStudentID` INT, IN `pDisciplineID` INT) - NO SQL -BEGIN - SELECT view_rating.ModuleID, - view_rating.ModuleName, - view_rating.SubmoduleID, - view_rating.SubmoduleName, - view_rating.SubmoduleRate AS 'MaxRate', - view_rating.SubmoduleType, - view_rating.Rate, - view_rating.Date, - view_rating.ModuleType - FROM `view_rating` - WHERE view_rating.StudentID = pStudentID AND - view_rating.DisciplineID = pDisciplineID - ORDER BY OrderModuleTypesForSession(view_rating.ModuleType) ASC, - view_rating.SubmoduleOrderNum ASC; -END // - - +# TODO: rename ~ GetRatesForStudent, Rating DROP PROCEDURE IF EXISTS GetMapForStudentExam// CREATE PROCEDURE `GetMapForStudentExam` ( IN `pStudentID` INT, IN `pDisciplineID` INT) @@ -702,34 +710,39 @@ BEGIN END // - +# TODO: rename GetRoadMap +# TODO: kill first param +# TODO: order hardcode +# get roadmap of discipline DROP PROCEDURE IF EXISTS GetMapForDiscipline// CREATE PROCEDURE `GetMapForDiscipline` ( IN `TeacherID` INT, IN `pDisciplineID` INT ) NO SQL BEGIN -# kill first param - SELECT view_disciplines.SubjectID, - view_disciplines.SubjectName, - view_roadmap.ModuleID, - view_roadmap.ModuleName, - view_roadmap.ModuleType, - view_roadmap.SubmoduleID, - view_roadmap.SubmoduleName, - view_roadmap.SubmoduleRate AS 'MaxRate', - view_roadmap.SubmoduleType - FROM `view_roadmap` - INNER JOIN `view_disciplines` ON view_disciplines.DisciplineID = pDisciplineID - WHERE view_roadmap.DisciplineID = pDisciplineID AND - (view_roadmap.ModuleType != 'exam' OR view_roadmap.SubmoduleOrderNum = 1) - ORDER BY view_roadmap.ModuleType ^ 1 ASC, - # 1, 3, 2, 4 ASC - view_roadmap.ModuleOrderNum ASC, - view_roadmap.SubmoduleOrderNum ASC; + SELECT view_disciplines.SubjectID, + view_disciplines.SubjectName, + view_roadmap.ModuleID, + view_roadmap.ModuleName, + view_roadmap.ModuleType, + view_roadmap.SubmoduleID, + view_roadmap.SubmoduleName, + view_roadmap.SubmoduleRate AS 'MaxRate', + view_roadmap.SubmoduleType + FROM `view_roadmap` + INNER JOIN `view_disciplines` ON view_disciplines.DisciplineID = pDisciplineID + WHERE view_roadmap.DisciplineID = pDisciplineID AND + (view_roadmap.ModuleType != 'exam' OR view_roadmap.SubmoduleOrderNum = 1) + ORDER BY view_roadmap.ModuleType ^ 1 ASC, + # 1, 3, 2, 4 ASC + view_roadmap.ModuleOrderNum ASC, + view_roadmap.SubmoduleOrderNum ASC; END // +# TODO: rename GetRoadMap +# TODO: kill first param +# get roadmap of discipline exam DROP PROCEDURE IF EXISTS GetMapForDisciplineExam// CREATE PROCEDURE `GetMapForDisciplineExam` ( IN `pTeacherID` INT, IN `pDisciplineID` INT) @@ -754,7 +767,7 @@ BEGIN END // - +# TODO: rename GetDisciplineInfo DROP PROCEDURE IF EXISTS GetDisciplineInfoByID// CREATE PROCEDURE `GetDisciplineInfoByID`( IN `pDisciplineID` INT ) NO SQL @@ -885,74 +898,8 @@ BEGIN END // -# DROP PROCEDURE IF EXISTS GetReports// -# CREATE PROCEDURE `GetReports` ( IN `StudyGroupID` INT -# ) -# NO SQL -# BEGIN -# # CREATE TEMPORARY TABLE IF NOT EXISTS `temp_disciplines` ( -# # `DisciplineID` int(11) NOT NULL, -# # `MaxRate` int(11) NOT NULL DEFAULT '0', -# # PRIMARY KEY (`DisciplineID`) -# # ) ENGINE=MEMORY DEFAULT CHARSET=utf8 AS ( -# # SELECT disciplines_groups.DisciplineID, -# # 0 AS 'MaxRate' -# # FROM `disciplines_groups` -# # WHERE disciplines_groups.StudyGroupID = StudyGroupID -# # UNION DISTINCT -# # SELECT disciplines_students.DisciplineID, -# # 0 AS 'MaxRate' -# # FROM `disciplines_students` -# # INNER JOIN `students` ON disciplines_students.ID = students.ID -# # WHERE students.StudyGroupID = StudyGroupID -# # ); - -# CREATE TEMPORARY TABLE IF NOT EXISTS `temp_disciplines` -# SELECT disciplines_groups.DisciplineID, -# 0 AS 'MaxRate' -# FROM `disciplines_groups` -# WHERE disciplines_groups.StudyGroupID = StudyGroupID -# UNION DISTINCT -# SELECT disciplines_students.DisciplineID, -# 0 AS 'MaxRate' -# FROM `disciplines_students` -# INNER JOIN `students` ON disciplines_students.ID = students.ID -# WHERE students.StudyGroupID = StudyGroupID; - -# UPDATE `temp_disciplines` -# SET temp_disciplines.MaxRate = GetMaxRateForDisc(temp_disciplines.DisciplineID); - -# SELECT students.ID AS 'StudentID', -# temp_disciplines.DisciplineID, -# temp_disciplines.MaxRate, -# GetRateForDisc(students.ID, temp_disciplines.DisciplineID) AS 'Rate' -# FROM `students` -# LEFT JOIN `temp_disciplines` ON 1=1 -# WHERE students.StudyGroupID = StudyGroupID; -# END // -DROP PROCEDURE IF EXISTS GetDisciplinesForGroup// -CREATE PROCEDURE `GetDisciplinesForGroup`(IN `pGroupID` INT) - NO SQL -BEGIN - SELECT disciplines_groups.DisciplineID AS 'DisciplineID', - subjects.Name AS 'SubjectName', - disciplines.ExamType AS 'ExamType' - FROM `disciplines_groups` - INNER JOIN `disciplines` ON disciplines.ID = disciplines_groups.DisciplineID - INNER JOIN `subjects` ON subjects.ID = disciplines.SubjectID - WHERE disciplines_groups.GroupID = pGroupID - UNION DISTINCT - SELECT disciplines_students.DisciplineID AS "DisciplineID", - subjects.Name AS "SubjectName", - disciplines.ExamType AS "ExamType" - FROM `disciplines_students` - INNER JOIN `students` ON disciplines_students.StudentID = students.ID - INNER JOIN `disciplines` ON disciplines.ID = disciplines_students.DisciplineID - INNER JOIN `subjects` ON subjects.ID = disciplines.SubjectID - WHERE students.GroupID = pGroupID; -END // DROP PROCEDURE IF EXISTS GetRatesForStudentsGroup// @@ -984,10 +931,7 @@ DROP PROCEDURE IF EXISTS GetFinalFormInfo// CREATE PROCEDURE `GetFinalFormInfo` (IN `pDisciplineID` INT, IN `pGroupID` INT) NO SQL -BEGIN - DECLARE vCurSemester INT; - SET vCurSemester = @CurrentSemesterID; - +BEGIN SELECT study_groups.GroupNum AS 'GroupNum', study_groups.Name AS 'GroupName', grades.ID AS 'GradeID', @@ -1022,7 +966,7 @@ BEGIN INNER JOIN `teachers` ON teachers.ID = disciplines.AuthorID INNER JOIN `departments` ON departments.ID = teachers.DepartmentID INNER JOIN `job_positions` ON job_positions.ID = teachers.JobPositionID - INNER JOIN `semesters` ON semesters.ID = vCurSemester + INNER JOIN `semesters` ON semesters.ID = @CurrentSemesterID WHERE study_groups.ID = pGroupID LIMIT 1; END // diff --git a/db/Views.sql b/db/Views.sql index 9ca560966..7528ce2ad 100644 --- a/db/Views.sql +++ b/db/Views.sql @@ -11,6 +11,7 @@ CREATE OR REPLACE VIEW `view_groups` AS 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' @@ -76,13 +77,14 @@ CREATE OR REPLACE VIEW `view_disciplines` AS CREATE OR REPLACE VIEW `view_disciplines_results` AS - SELECT modules.DisciplineID, + SELECT disciplines.ID AS 'DisciplineID', SUM(submodules.MaxRate) AS 'DisciplineRateMax', SUM(submodules.MaxRate*submodules.IsUsed) AS 'DisciplineRateCur' FROM `submodules` INNER JOIN `modules` ON modules.ID = submodules.ModuleID + RIGHT JOIN `disciplines` ON disciplines.ID = modules.DisciplineID WHERE (modules.Type = 'regular') OR (modules.Type = 'exam' AND submodules.OrderNum = 1) - GROUP BY modules.DisciplineID; + GROUP BY disciplines.ID; CREATE OR REPLACE VIEW `view_disciplines_teachers` AS @@ -112,7 +114,7 @@ CREATE OR REPLACE VIEW `view_disciplines_students` AS WHERE disciplines_students.DisciplineID = disciplines_groups.DisciplineID AND disciplines_students.StudentID = view_students.StudentID ) - ); + ); CREATE OR REPLACE VIEW `view_roadmap` AS -- GitLab