From 8a505b6f483d7bf8ade41e56c77e3fea417c72ca Mon Sep 17 00:00:00 2001 From: PavelBegunkov <asml.Silence@gmail.com> Date: Sat, 30 Aug 2014 15:16:14 +0400 Subject: [PATCH] optimizing --- db/StoredProcedures.sql | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/db/StoredProcedures.sql b/db/StoredProcedures.sql index 18a100af2..a69607c0f 100644 --- a/db/StoredProcedures.sql +++ b/db/StoredProcedures.sql @@ -1124,22 +1124,24 @@ BEGIN WHERE disciplines.ID = DiscID; END // -DROP FUNCTION IF EXISTS isAuthorOfDiscipline// -CREATE FUNCTION `isAuthorOfDiscipline`( `DisciplineID` INT, - `TeacherID` INT - ) RETURNS int(11) - NO SQL -BEGIN - DECLARE checker INT; - SELECT disciplines.AuthorID - INTO checker - FROM `disciplines` - WHERE disciplines.ID = DisciplineID - LIMIT 1; - RETURN (checker IS NOT NULL AND checker = TeacherID); +-- Deprecated +-- DROP FUNCTION IF EXISTS isAuthorOfDiscipline// +-- CREATE FUNCTION `isAuthorOfDiscipline`( `DisciplineID` INT, +-- `TeacherID` INT +-- ) RETURNS int(11) +-- NO SQL +-- BEGIN +-- DECLARE checker INT; +-- SELECT disciplines.AuthorID +-- INTO checker +-- FROM `disciplines` +-- WHERE disciplines.ID = DisciplineID +-- LIMIT 1; + +-- RETURN (checker IS NOT NULL AND checker = TeacherID); -END // +-- END // DROP PROCEDURE IF EXISTS GetTeachersForDiscipline// CREATE PROCEDURE `GetTeachersForDiscipline`(IN `DiscID` INT) @@ -1157,8 +1159,9 @@ BEGIN faculties.ID AS 'FacultyID', faculties.Name AS 'FacultyName', faculties.Abbr AS 'FacultyAbbr', - isAuthorOfDiscipline(DiscID, teachers.ID) AS 'isAuthor' + (teachers.ID = disciplines.AuthorID) AS 'isAuthor' FROM `disciplines_teachers` + INNER JOIN `disciplines` ON disciplines.ID = disciplines_teachers.DisciplineID INNER JOIN `teachers` ON teachers.ID = disciplines_teachers.TeacherID INNER JOIN `departments` ON departments.ID = teachers.DepartmentID INNER JOIN `faculties` ON departments.FacultyID = faculties.ID -- GitLab