diff --git a/db/StoredProcedures.sql b/db/StoredProcedures.sql index e5601727861bb205fc26679a3ec77a1957b01f5a..741e5728ce179edcd0a7b4a64d75de8e3c500989 100644 --- a/db/StoredProcedures.sql +++ b/db/StoredProcedures.sql @@ -1403,6 +1403,41 @@ END // +DROP PROCEDURE IF EXISTS SearchTeacherNew// +CREATE PROCEDURE `SearchTeacherNew` ( IN `FacultyID` INT, + IN `DepartmentID` INT, + IN `Last` VARCHAR(30) CHARSET utf8, + IN `First` VARCHAR(30) CHARSET utf8, + IN `Second` VARCHAR(30) CHARSET utf8, + IN `DisciplineID` INT + ) + NO SQL +BEGIN + SELECT teachers.ID AS 'TeacherID', + teachers.LastName AS 'TeacherLast', + teachers.FirstName AS 'TeacherFirst', + teachers.SecondName AS 'TeacherSecond', + teachers.AccountID AS 'TeacherAccID', + job_positions.Name AS 'JobPositionName', + departments.ID AS 'DepID', + departments.Name AS 'DepName' + FROM `teachers` + INNER JOIN `departments` ON departments.ID = teachers.DepartmentID + INNER JOIN `job_positions` ON job_positions.ID = teachers.JobPositionID + LEFT JOIN `disciplines_teachers` ON disciplines_teachers.TeacherID = teachers.ID AND + disciplines_teachers.DisciplineID = DisciplineID + WHERE ( DepartmentID = 0 OR departments.ID = DepartmentID) AND + ( FacultyID = 0 OR departments.FacultyID = FacultyID) AND + ( teachers.LastName LIKE CONCAT(Last,"%") ) AND + ( teachers.FirstName LIKE CONCAT(First,"%") ) AND + ( teachers.SecondName LIKE CONCAT(Second,"%") ) AND + disciplines_teachers.ID IS NULL + ORDER BY departments.FacultyID ASC, departments.Name ASC, teachers.LastName ASC, teachers.FirstName ASC, teachers.SecondName ASC; + +END // + + + @@ -1506,7 +1541,7 @@ END // DROP FUNCTION IF EXISTS UnbindTeacher// -CREATE FUNCTION `UnbindTeacher` ( `AccessedTeacher` INT, +CREATE FUNCTION `UnbindTeacher` ( `AuthorID` INT, `BindingTeacher` INT, `DisciplineID` INT ) RETURNS int(11) @@ -1519,12 +1554,16 @@ BEGIN INTO checker FROM `disciplines` WHERE disciplines.ID = DisciplineID AND - disciplines.AuthorID = AccessedTeacher + disciplines.AuthorID = AuthorID LIMIT 1; IF NOT (checker > 0) THEN RETURN -1; END IF; + IF AuthorID = BindingTeacher + RETURN -1; + END IF; + DELETE FROM `disciplines_teachers` WHERE disciplines_teachers.DisciplineID = DisciplineID AND disciplines_teachers.TeacherID = BindingTeacher;