diff --git a/db/StoredProcedures.sql b/db/StoredProcedures.sql index 1efdc5e9f41da08a8ecee2b509050a036e1815a8..5fcac4ed09280aff0c14bf2ab9962e4bf8b6b1e2 100644 --- a/db/StoredProcedures.sql +++ b/db/StoredProcedures.sql @@ -931,7 +931,35 @@ BEGIN END // +DROP PROCEDURE IF EXISTS SearchStudents// +CREATE PROCEDURE `SearchStudents` ( 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 + ) + 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 + WHERE ( Grade IS NULL OR study_groups.Grade = Grade) AND + ( GroupN IS NULL OR study_groups.GroupNum = GroupN) AND + ( FacultyID IS NULL OR specializations.FacultyID = FacultyID) AND + ( Last IS NULL OR ( students.LastName REGEXP CONCAT("^",Last,"*"))) AND + ( First IS NULL OR ( students.FirstName REGEXP CONCAT("^",First,"*"))) AND + ( Second IS NULL OR ( students.SecondName REGEXP CONCAT("^",Second,"*"))) + ORDER BY study_groups.Grade ASC, study_groups.GroupNum ASC; + +END //