diff --git a/db/StoredProcedures.sql b/db/StoredProcedures.sql index 4a6bcfb53bb24800b1918d5403d8413c7a2754a7..9a4599fdf98ad50a5e1dc730b386d55a3fbcc6f5 100644 --- a/db/StoredProcedures.sql +++ b/db/StoredProcedures.sql @@ -992,7 +992,48 @@ END // +DROP PROCEDURE IF EXISTS SearchStudentsNew// +CREATE PROCEDURE `SearchStudentsNew` ( IN `Grade` INT, + IN `GroupN` INT, + IN `FacultyID` 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 students.ID AS 'StudentID', + students.LastName AS 'StudentLast', + students.FirstName AS 'StudentFirst', + students.SecondName AS 'StudentSecond', + study_groups.Grade AS 'GroupGrade', + study_groups.GroupNum AS 'GroupNum' + FROM `students` + INNER JOIN `study_groups` ON students.StudyGroupID = study_groups.ID + INNER JOIN `specializations` ON study_groups.SpecializationID = specializations.ID + LEFT JOIN `disciplines_students` ON students.ID = disciplines_students.StudentID AND + DisciplineID = disciplines_students.DisciplineID + LEFT JOIN `disciplines_groups` ON disciplines_groups.StudyGroupID = study_groups.ID AND + DisciplineID = disciplines_groups.DisciplineID + WHERE ( Grade = 0 OR study_groups.Grade = Grade) AND + ( GroupN = 0 OR study_groups.GroupNum = GroupN) AND + ( FacultyID = 0 OR specializations.FacultyID = FacultyID) AND + ( students.LastName LIKE CONCAT(Last,"%") ) AND + ( students.FirstName LIKE CONCAT(First,"%") ) AND + ( students.SecondName LIKE CONCAT(Second,"%") ) AND + ( disciplines_students.Type = 'detach' OR + ( disciplines_groups.ID IS NULL AND + ( disciplines_students.Type IS NULL OR + disciplines_students.Type != 'attach' + ) + ) + ) + + ORDER BY study_groups.Grade ASC, study_groups.GroupNum ASC; + +END //