Skip to content
Snippets Groups Projects
Commit d989fd18 authored by PavelBegunkov's avatar PavelBegunkov
Browse files

sql stored proc: @CurrentSemesterID annihilation

parent 7a737c2d
No related merge requests found
......@@ -805,6 +805,22 @@ END //
DROP FUNCTION IF EXISTS GetDisciplineSemesterID//
CREATE FUNCTION `GetDisciplineSemesterID` (
`pDisciplineID` INT
) RETURNS int(11)
NO SQL
BEGIN
DECLARE vSemesterID INT DEFAULT -1;
SELECT disciplines.SemesterID INTO vSemesterID
FROM `disciplines`
WHERE disciplines.ID = pDisciplineID
LIMIT 1;
RETURN vSemesterID;
END //
DROP FUNCTION IF EXISTS AddDiscipline//
DROP FUNCTION IF EXISTS Discipline_Create//
CREATE FUNCTION `Discipline_Create` (
......
......@@ -459,7 +459,8 @@ CREATE PROCEDURE `SearchStudents` (
IN `pGroupID` INT,
IN `pFacultyID` INT,
IN `pFullName` VARCHAR(100) CHARSET utf8,
IN `pDisciplineID` INT
IN `pDisciplineID` INT,
IN `pSemesterID` INT
)
NO SQL
BEGIN
......@@ -477,7 +478,7 @@ BEGIN
disciplines_students.DisciplineID = pDisciplineID
LEFT JOIN `disciplines_groups` ON disciplines_groups.GroupID = view_students.GroupID AND
disciplines_groups.DisciplineID = pDisciplineID
WHERE view_students.SemesterID = @CurrentSemesterID AND
WHERE view_students.SemesterID = pSemesterID AND
view_students.FacultyID = pFacultyID AND
view_students.GradeID = pGradeID AND
(view_students.GroupID = pGroupID OR pGroupID = 0) AND
......@@ -727,17 +728,23 @@ END //
# -------------------------------------------------------------------------------------------
DROP PROCEDURE IF EXISTS GetRatesForGroup//
CREATE PROCEDURE `GetRatesForGroup`
( IN `pDisciplineID` INT, IN `pGroupID` INT)
CREATE PROCEDURE `GetRatesForGroup` (
IN `pDisciplineID` INT,
IN `pGroupID` INT
)
NO SQL
BEGIN
DECLARE vChecker BOOLEAN DEFAULT FALSE;
DECLARE vSemesterID INT DEFAULT -1;
SELECT disciplines_groups.ID IS NOT NULL INTO vChecker
FROM `disciplines_groups`
WHERE disciplines_groups.DisciplineID = pDisciplineID AND
disciplines_groups.GroupID = pGroupID
LIMIT 1;
SET vSemesterID = GetDisciplineSemesterID(pDisciplineID);
IF !vChecker THEN
SELECT students.ID,
students.LastName,
......@@ -750,7 +757,7 @@ BEGIN
LEFT JOIN `view_rating_result` ON view_rating_result.DisciplineID = pDisciplineID AND
view_rating_result.StudentID = students.ID
INNER JOIN `students_groups` ON students_groups.StudentID = students.ID AND
students_groups.SemesterID = @CurrentSemesterID
students_groups.SemesterID = vSemesterID
WHERE students_groups.GroupID = pGroupID AND
EXISTS(SELECT * FROM `disciplines_students`
WHERE disciplines_students.DisciplineID = pDisciplineID AND
......@@ -769,7 +776,7 @@ BEGIN
LEFT JOIN `view_rating_result` ON view_rating_result.DisciplineID = pDisciplineID AND
view_rating_result.StudentID = students.ID
INNER JOIN `students_groups` ON students_groups.StudentID = students.ID AND
students_groups.SemesterID = @CurrentSemesterID
students_groups.SemesterID = vSemesterID
WHERE students_groups.GroupID = pGroupID AND
NOT EXISTS(SELECT * FROM `disciplines_students`
WHERE disciplines_students.DisciplineID = pDisciplineID AND
......@@ -1048,8 +1055,10 @@ END //
DROP PROCEDURE IF EXISTS GetFinalFormInfo//
CREATE PROCEDURE `GetFinalFormInfo`
(IN `pDisciplineID` INT, IN `pGroupID` INT)
CREATE PROCEDURE `GetFinalFormInfo` (
IN `pDisciplineID` INT,
IN `pGroupID` INT
)
NO SQL
BEGIN
SELECT study_groups.GroupNum AS 'GroupNum',
......@@ -1086,7 +1095,7 @@ BEGIN
INNER JOIN `teachers` ON teachers.ID = disciplines.AuthorID
INNER JOIN `departments` ON departments.ID = teachers.DepartmentID
INNER JOIN `job_positions` ON job_positions.ID = teachers.JobPositionID
INNER JOIN `semesters` ON semesters.ID = @CurrentSemesterID
INNER JOIN `semesters` ON disciplines.SemesterID
WHERE study_groups.ID = pGroupID
LIMIT 1;
END //
......
......@@ -37,7 +37,8 @@ class Model_Students extends Model
public static function searchStudents($GradeID, $GroupID, $FacultyID, $Name, $DisciplineID) {
$Name = Database::instance()->escape($Name);
$sql = "CALL `SearchStudents`('$GradeID', '$GroupID', '$FacultyID', $Name, '$DisciplineID'); ";
$semesterID = User::instance()->offsetGet('SemesterID');
$sql = "CALL `SearchStudents`('$GradeID', '$GroupID', '$FacultyID', $Name, '$DisciplineID', $semesterID); ";
return DB::query(Database::SELECT, $sql)->execute();
}
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment