From 7c15cccc5be0eaddac454ecfc56fc48d04a0e8b5 Mon Sep 17 00:00:00 2001 From: PavelBegunkov <asml.Silence@gmail.com> Date: Sat, 23 Aug 2014 02:01:58 +0400 Subject: [PATCH] procedures critical fixes --- db/StoredProcedures.sql | 40 +++++++++++----------------------------- 1 file changed, 11 insertions(+), 29 deletions(-) diff --git a/db/StoredProcedures.sql b/db/StoredProcedures.sql index 057b5310b..f0f2217d9 100644 --- a/db/StoredProcedures.sql +++ b/db/StoredProcedures.sql @@ -644,24 +644,15 @@ CREATE FUNCTION `CreateStudent`( `Last` VARCHAR(30) CHARSET utf8, ) RETURNS int(11) NO SQL BEGIN - DECLARE curID, StudyGroupID, RoleID INT; - - SELECT user_roles.ID - INTO RoleID - FROM `user_roles` - WHERE user_roles.Type = 'student' AND - user_roles.Role = 'common' - LIMIT 1; - IF NOT (RoleID > 0) THEN - RETURN -1; - END IF; + DECLARE curID, StudyGroupID INT; SELECT study_groups.ID INTO StudyGroupID FROM `study_groups` + INNER JOIN `specializations` ON study_groups.SpecializationID = specializations.ID WHERE study_groups.Grade = Grade AND study_groups.GroupNum = GroupN AND - study_groups.FacultyID = FacultyID + specializations.FacultyID = FacultyID LIMIT 1; IF NOT (StudyGroupID > 0) THEN RETURN -1; @@ -669,7 +660,7 @@ BEGIN INSERT INTO `accounts` ( accounts.Login , accounts.Password , accounts.EMail, accounts.UserRoleID, accounts.ActivationCode ) - VALUES ( NULL, NULL, NULL, RoleID, Code); + VALUES ( NULL, NULL, NULL, 1, Code); SELECT accounts.ID INTO curID @@ -697,15 +688,6 @@ CREATE FUNCTION `CreateTeacher`( `Last` VARCHAR(30) CHARSET utf8, BEGIN DECLARE curID, checker, RoleID INT; - SELECT user_roles.ID - INTO RoleID - FROM `user_roles` - WHERE user_roles.Type = 'teachers' AND - user_roles.Role = 'common' - LIMIT 1; - IF NOT (RoleID > 0) THEN - RETURN -1; - END IF; SELECT departments.ID INTO checker @@ -732,7 +714,7 @@ BEGIN END IF; INSERT INTO `accounts` ( accounts.Login , accounts.Password , accounts.EMail, accounts.UserRoleID, accounts.ActivationCode ) - VALUES ( NULL, NULL, NULL, RoleID, Code); + VALUES ( NULL, NULL, NULL, 2, Code); SELECT accounts.ID INTO curID FROM `accounts` @@ -791,7 +773,7 @@ CREATE FUNCTION `GetMaxRateForDisc` ( `StudentID` INT, ) RETURNS int(11) NO SQL BEGIN - RETURN ( SELECT SUM(rating_table.MaxRate) + RETURN ( SELECT SUM(submodules.MaxRate) FROM `rating_table` INNER JOIN `submodules` ON rating_table.SubmoduleID = submodules.ID INNER JOIN `modules` ON submodules.ModuleID = modules.ID @@ -830,7 +812,7 @@ BEGIN disciplines_students.StudentID = StudentID WHERE disciplines.SemesterID = semID AND ( disciplines_students.Type = 'attach' OR - ( disciplines_students.Type != 'detach' AND + ( ( disciplines_students.Type IS NULL OR disciplines_students.Type != 'detach' ) AND disciplines_groups.StudyGroupID = groupID ) ) @@ -871,7 +853,7 @@ BEGIN disciplines_students.StudentID = StudentID WHERE disciplines.SemesterID = semID AND ( disciplines_students.Type = 'attach' OR - ( disciplines_students.Type != 'detach' AND + ( ( disciplines_students.Type IS NULL OR disciplines_students.Type != 'detach' ) AND disciplines_groups.StudyGroupID = groupID ) ) @@ -970,7 +952,7 @@ BEGIN FROM `disciplines_groups` INNER JOIN `disciplines` ON disciplines_groups.DisciplineID = disciplines.ID INNER JOIN `disciplines_teachers` ON disciplines.ID = disciplines_teachers.DisciplineID AND - disciplines.TeacherID = TeacherID + disciplines_teachers.TeacherID = TeacherID INNER JOIN `subjects` ON subjects.ID = disciplines.SubjectID INNER JOIN `study_groups` ON study_groups.ID = disciplines_groups.StudyGroupID WHERE disciplines.SemesterID = semID @@ -1060,7 +1042,7 @@ BEGIN submodules.MaxRate, submodules.Type AS 'SubmoduleControl' FROM `modules` - RIGHT JOIN `submodules` ON modules.ID = submodules.ModuleID + LEFT JOIN `submodules` ON modules.ID = submodules.ModuleID INNER JOIN `disciplines` ON modules.DisciplineID = disciplines.ID INNER JOIN `subjects` ON disciplines.SubjectID = subjects.ID ORDER BY modules.OrderNum ASC, @@ -1268,7 +1250,7 @@ BEGIN FROM `disciplines` INNER JOIN `disciplines_teachers` ON disciplines_teachers.DisciplineID = disciplines.ID AND disciplines_teachers.TeacherID = AccessedTeacher - WHERE disciplines.ID = discID + WHERE disciplines.ID = DisciplineID LIMIT 1; IF NOT (checker > 0) THEN RETURN -1; -- GitLab