From fe9b499ded0b395ecfe0b27e0d7c1ea7994dea47 Mon Sep 17 00:00:00 2001
From: PavelBegunkov <asml.Silence@gmail.com>
Date: Fri, 29 Aug 2014 20:06:57 +0400
Subject: [PATCH] ++ extended SearchStudents

---
 db/StoredProcedures.sql | 41 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 41 insertions(+)

diff --git a/db/StoredProcedures.sql b/db/StoredProcedures.sql
index 4a6bcfb53..9a4599fdf 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 //
 
 
 
-- 
GitLab