From d7508282c47a912a9035042d2360dc102af09a9b Mon Sep 17 00:00:00 2001 From: PavelBegunkov <asml.Silence@gmail.com> Date: Sun, 31 Aug 2014 00:23:15 +0400 Subject: [PATCH] GetDisciplinesForTeacher: ++isAuthor(out), ++isMapCreated(out) --- db/Sample.sql | 2 +- db/StoredProcedures.sql | 70 ++++++++++++++++++++++------------------- 2 files changed, 39 insertions(+), 33 deletions(-) diff --git a/db/Sample.sql b/db/Sample.sql index 7efb0d393..aae9ccea1 100644 --- a/db/Sample.sql +++ b/db/Sample.sql @@ -106,7 +106,7 @@ INSERT INTO `departments` (`ID`, `Name`, `FacultyID`) VALUES (11, 'Кафедра теоретической и компьютерной гидроаэродинамики', 1), (12, 'Кафедра теории упругости', 1), (13, 'Кафедра технологий автоматизации в бизнесе', 1), -(14, 'Кафедра междунарожного права', 2); +(14, 'Кафедра международного права', 2); -- -- Дамп данных таблицы `semesters` diff --git a/db/StoredProcedures.sql b/db/StoredProcedures.sql index b765fef22..fec1b9507 100644 --- a/db/StoredProcedures.sql +++ b/db/StoredProcedures.sql @@ -1193,7 +1193,10 @@ BEGIN study_groups.ID AS 'StudyGroupID', study_groups.GroupNum AS 'StudyGroupNum', study_groups.Grade AS 'StudyGroupGrade', - study_groups.Name AS 'StudyGroupName' + study_groups.Name AS 'StudyGroupName', + (TeacherID = disciplines.AuthorID) AS 'isAuthor', + (modules.ID IS NOT NULL) AS 'isMapCreated' + FROM `disciplines_groups` RIGHT JOIN `disciplines` ON disciplines_groups.DisciplineID = disciplines.ID OR disciplines_groups.DisciplineID IS NULL @@ -1201,6 +1204,7 @@ BEGIN disciplines_teachers.TeacherID = TeacherID INNER JOIN `subjects` ON subjects.ID = disciplines.SubjectID LEFT JOIN `study_groups` ON study_groups.ID = disciplines_groups.StudyGroupID + LEFT JOIN `modules` ON disciplines.ID = modules.DisciplineID WHERE disciplines.SemesterID = semID ORDER BY disciplines.Grade ASC, subjects.Name ASC, @@ -1339,42 +1343,44 @@ BEGIN disciplines_teachers.TeacherID = TeacherID WHERE disciplines.ID = discID LIMIT 1; + IF NOT (checker > 0) THEN + RETURN -1; + END IF; - IF checker > 0 THEN - - SELECT COUNT(rating_table.ID) - INTO checker - FROM `rating_table` - WHERE rating_table.SubmoduleID = SubmoduleID AND - rating_table.TeacherID = TeacherID AND - rating_table.StudentID = StudentID; - IF checker = 0 THEN + SELECT COUNT(rating_table.ID) + INTO checker + FROM `rating_table` + WHERE rating_table.SubmoduleID = SubmoduleID AND + rating_table.TeacherID = TeacherID AND + rating_table.StudentID = StudentID; + IF NOT (checker = 0) THEN + RETURN -1; + END IF; - SELECT students.StudyGroupID INTO groupID FROM `students` WHERE students.ID = StudentID LIMIT 1; - SET semID = GetCurSemesterID(); - - SELECT disciplines.ID INTO checker - FROM `disciplines` - LEFT JOIN `disciplines_groups` ON disciplines_groups.DisciplineID = disciplines.ID AND - disciplines_groups.StudyGroupID = groupID - LEFT JOIN `disciplines_students` ON disciplines_students.DisciplineID = disciplines.ID AND - disciplines_students.StudentID = StudentID - WHERE disciplines.SubjectID = SubjectID AND - disciplines.SemesterID = semID AND - ( disciplines_students.Type = 'attach' OR - ((disciplines_students.Type IS NULL OR disciplines_students.Type != 'detach') AND disciplines_groups.StudyGroupID = groupID ) - ) - LIMIT 1; + SELECT students.StudyGroupID INTO groupID FROM `students` WHERE students.ID = StudentID LIMIT 1; + SET semID = GetCurSemesterID(); + + SELECT disciplines.ID INTO checker + FROM `disciplines` + LEFT JOIN `disciplines_groups` ON disciplines_groups.DisciplineID = disciplines.ID AND + disciplines_groups.StudyGroupID = groupID + LEFT JOIN `disciplines_students` ON disciplines_students.DisciplineID = disciplines.ID AND + disciplines_students.StudentID = StudentID + WHERE disciplines.SubjectID = SubjectID AND + disciplines.SemesterID = semID AND + ( disciplines_students.Type = 'attach' OR + ((disciplines_students.Type IS NULL OR disciplines_students.Type != 'detach') AND disciplines_groups.StudyGroupID = groupID ) + ) + LIMIT 1; - IF checker > 0 THEN - INSERT INTO `rating_table` ( rating_table.StudentID, rating_table.TeacherID, rating_table.SubmoduleID, rating_table.Rate, rating_table.Date ) - VALUES ( StudentID, TeacherID, SubmoduleID, Rate, CURDATE() ); - RETURN 0; - END IF; - END IF; + IF NOT (checker > 0) THEN + RETURN -1; END IF; - RETURN -1; + + INSERT INTO `rating_table` ( rating_table.StudentID, rating_table.TeacherID, rating_table.SubmoduleID, rating_table.Rate, rating_table.Date ) + VALUES ( StudentID, TeacherID, SubmoduleID, Rate, CURDATE() ); + RETURN 0; END // -- GitLab