From a44d29f71653a4d6d4f4856a2f586844e8f8dc42 Mon Sep 17 00:00:00 2001
From: PavelBegunkov <asml.Silence@gmail.com>
Date: Tue, 10 Feb 2015 01:31:01 +0300
Subject: [PATCH] nothing valuable

---
 db/StoredProcedures.sql | 51 ++++++++++++++++-------
 db/Views.sql            | 92 +++++++++++++++++++++--------------------
 2 files changed, 85 insertions(+), 58 deletions(-)

diff --git a/db/StoredProcedures.sql b/db/StoredProcedures.sql
index ff2cbcabf..47bf102af 100644
--- a/db/StoredProcedures.sql
+++ b/db/StoredProcedures.sql
@@ -454,15 +454,16 @@ END //
 
 
 DROP PROCEDURE IF EXISTS GetSemesterInfo//
-CREATE PROCEDURE `GetSemesterInfo` (IN `pSemesterID` INT)
-    NO SQL
-BEGIN
-    SELECT  semesters.Num   As 'Num',   
-            semesters.Year  As 'Year'
-        FROM `semesters`
-        WHERE semesters.ID = pSemesterID
-        LIMIT 1;
-END //
+# TODO: del
+# CREATE PROCEDURE `GetSemesterInfo` (IN `pSemesterID` INT)
+#     NO SQL
+# BEGIN
+#     SELECT  semesters.Num   As 'Num',
+#             semesters.Year  As 'Year'
+#         FROM `semesters`
+#         WHERE semesters.ID = pSemesterID
+#         LIMIT 1;
+# END //
 
 
 # -------------------------------------------------------------------------------------------
@@ -627,7 +628,6 @@ CREATE PROCEDURE `GetStudyGroups`
 BEGIN
     SELECT  view_study_groups.GroupID   AS 'ID',
             view_study_groups.GroupNum  AS 'GroupNum',
-            view_study_groups.SpecID,
             view_study_groups.SpecName,
             view_study_groups.SpecAbbr 
         FROM `view_study_groups`
@@ -1606,7 +1606,7 @@ END //
 # search students, that in main group or attached
 DROP PROCEDURE IF EXISTS GetStudentsForDiscipline//
 CREATE PROCEDURE `GetStudentsForDiscipline` 
-    (   IN `TeacherID` INT, IN `pDisciplineID` INT)
+    (   IN `pTeacherID` INT, IN `pDisciplineID` INT)
     NO SQL
 BEGIN  
     SELECT  view_disciplines_students.StudentID     AS 'ID',
@@ -1801,8 +1801,8 @@ DROP PROCEDURE IF EXISTS GetMapForStudentExam//
 CREATE PROCEDURE `GetMapForStudentExam`
     (   IN `pStudentID` INT, IN `pDisciplineID` INT)
     NO SQL
-BEGIN  
-    SELECT  view_rating.ModuleID, 
+BEGIN
+    SELECT  view_rating.ModuleID,
             view_rating.ModuleName,
             view_rating.SubmoduleID,
             view_rating.SubModuleName,
@@ -1814,11 +1814,34 @@ BEGIN
         FROM `view_rating`
         WHERE view_rating.StudentID = pStudentID AND
                 view_rating.DisciplineID = pDisciplineID
-        ORDER BY    view_rating.ModuleOrderNum ASC, 
+        ORDER BY    view_rating.ModuleOrderNum ASC,
                     view_rating.SubmoduleOrderNum ASC;
 END //
 
 
+DROP PROCEDURE IF EXISTS GetMapForStudentExam//
+CREATE PROCEDURE `GetMapForStudentExam`
+    (	IN `pStudentID` INT, IN `pDisciplineID` INT)
+NO SQL
+    BEGIN
+        SELECT  view_roadmap.ModuleID,
+                view_roadmap.ModuleName,
+                view_roadmap.SubmoduleID,
+                view_roadmap.SubModuleName,
+                view_roadmap.SubmoduleRate AS 'MaxRate',
+                view_roadmap.SubmoduleType AS 'SubmoduleControl',
+                rating_table.Rate,
+                rating_table.Date,
+                view_roadmap.ModuleType
+        FROM `view_roadmap`
+        LEFT JOIN `rating_table` 	ON 	rating_table.SubmoduleID = view_roadmap.SubmoduleID AND
+                                        rating_table.StudentID = pStudentID
+        WHERE view_roadmap.DisciplineID = pDisciplineID
+        ORDER BY view_roadmap.ModuleOrderNum ASC,
+                view_roadmap.SubmoduleOrderNum ASC;
+    END //
+
+
 
 DROP PROCEDURE IF EXISTS GetMapForDiscipline//
 CREATE PROCEDURE `GetMapForDiscipline`  (   IN `TeacherID`      INT,
diff --git a/db/Views.sql b/db/Views.sql
index 92d84cf65..a836001dd 100644
--- a/db/Views.sql
+++ b/db/Views.sql
@@ -14,10 +14,10 @@ CREATE OR REPLACE VIEW `view_study_groups` AS
             faculties.ID        AS 'FacultyID', 
             faculties.Name      AS 'FacultyName', 
             faculties.Abbr      AS 'FacultyAbbr'
-    FROM `study_groups`
-    INNER JOIN `specializations`    ON study_groups.SpecializationID = specializations.ID
-    INNER JOIN `grades` ON study_groups.GradeID = grades.ID
-    INNER JOIN `faculties` ON faculties.ID = specializations.FacultyID; 
+        FROM `study_groups`
+        INNER JOIN `specializations`    ON study_groups.SpecializationID = specializations.ID
+        INNER JOIN `grades` ON study_groups.GradeID = grades.ID
+        INNER JOIN `faculties` ON faculties.ID = specializations.FacultyID; 
 
 
 CREATE OR REPLACE VIEW `view_teachers` AS 
@@ -33,10 +33,10 @@ CREATE OR REPLACE VIEW `view_teachers` AS
             faculties.ID        AS 'FacultyID', 
             faculties.Name      AS 'FacultyName', 
             faculties.Abbr      AS 'FacultyAbbr'
-    FROM `teachers`
-    INNER JOIN `departments`    ON  departments.ID = teachers.DepartmentID
-    INNER JOIN `faculties`      ON  departments.FacultyID = faculties.ID
-    INNER JOIN `job_positions`  ON  job_positions.ID = teachers.JobPositionID;
+        FROM `teachers`
+        INNER JOIN `departments`    ON  departments.ID = teachers.DepartmentID
+        INNER JOIN `faculties`      ON  departments.FacultyID = faculties.ID
+        INNER JOIN `job_positions`  ON  job_positions.ID = teachers.JobPositionID;
 
 
 CREATE OR REPLACE VIEW `view_students` AS 
@@ -46,8 +46,8 @@ CREATE OR REPLACE VIEW `view_students` AS
             students.SecondName,
             students.AccountID,
             view_study_groups.*
-    FROM `students`
-    INNER JOIN `view_study_groups` ON view_study_groups.GroupID = students.StudyGroupID;
+        FROM `students`
+        INNER JOIN `view_study_groups` ON view_study_groups.GroupID = students.StudyGroupID;
 
 
 CREATE OR REPLACE VIEW `view_disciplines` AS 
@@ -69,46 +69,50 @@ CREATE OR REPLACE VIEW `view_disciplines` AS
             faculties.ID            AS 'FacultyID',
             faculties.Name          AS 'FacultyName',
             faculties.Abbr          AS 'FacultyAbbr'
-    FROM `disciplines`
-    INNER JOIN `subjects` ON subjects.ID = disciplines.SubjectID
-    INNER JOIN `faculties` ON faculties.ID = disciplines.FacultyID
-    INNER JOIN `grades` ON grades.ID = disciplines.GradeID;
+        FROM `disciplines`
+        INNER JOIN `subjects` ON subjects.ID = disciplines.SubjectID
+        INNER JOIN `faculties` ON faculties.ID = disciplines.FacultyID
+        INNER JOIN `grades` ON grades.ID = disciplines.GradeID;
 
 
 CREATE OR REPLACE VIEW `view_disciplines_results` AS
     SELECT  modules.DisciplineID,
             SUM(submodules.MaxRate) AS 'DisciplineRateMax',
             SUM(submodules.MaxRate*submodules.isUsed) AS 'DisciplineRateCur'
-    FROM `submodules`
-    INNER JOIN `modules` ON modules.ID = submodules.ModuleID
-    WHERE (modules.Type = 'regular') OR (modules.Type = 'exam' AND submodules.OrderNum = 1)
-    GROUP BY modules.DisciplineID;
+        FROM `submodules`
+        INNER JOIN `modules` ON modules.ID = submodules.ModuleID
+        WHERE (modules.Type = 'regular') OR (modules.Type = 'exam' AND submodules.OrderNum = 1)
+        GROUP BY modules.DisciplineID;
 
 
 CREATE OR REPLACE VIEW `view_disciplines_teachers` AS 
     SELECT  view_disciplines.DisciplineID,
             view_teachers.*,
             (view_disciplines.AuthorID = view_teachers.TeacherID) AS 'IsAuthor'
-    FROM `view_disciplines`
-    LEFT JOIN `disciplines_teachers` ON disciplines_teachers.DisciplineID = view_disciplines.DisciplineID
-    INNER JOIN `view_teachers` ON view_teachers.TeacherID = disciplines_teachers.TeacherID;
+        FROM `view_disciplines`
+        LEFT JOIN `disciplines_teachers` ON disciplines_teachers.DisciplineID = view_disciplines.DisciplineID
+        INNER JOIN `view_teachers` ON view_teachers.TeacherID = disciplines_teachers.TeacherID;
 
 
 CREATE OR REPLACE VIEW `view_disciplines_students` AS 
-    SELECT  disciplines_students.DisciplineID,
+    (SELECT disciplines_students.DisciplineID,
             disciplines_students.Type AS 'AttachType',
             view_students.*
-    FROM `disciplines_students`
-    INNER JOIN `view_students` ON    view_students.StudentID = disciplines_students.StudentID 
-    UNION DISTINCT
-    SELECT  disciplines_groups.DisciplineID,
+        FROM `disciplines_students`
+        INNER JOIN `view_students` ON view_students.StudentID = disciplines_students.StudentID 
+    ) UNION
+    (SELECT disciplines_groups.DisciplineID,
             NULL AS 'AttachType',
             view_students.*
-    FROM `disciplines_groups`
-    LEFT JOIN `view_students` ON view_students.GroupID = disciplines_groups.StudyGroupID
-    LEFT JOIN `disciplines_students` ON disciplines_students.StudentID = view_students.StudentID AND
-                                        disciplines_students.DisciplineID = disciplines_groups.DisciplineID
-    WHERE disciplines_students.Type IS NULL; 
+        FROM `disciplines_groups`
+        LEFT JOIN `view_students` ON view_students.GroupID = disciplines_groups.StudyGroupID
+        WHERE NOT EXISTS 
+            (SELECT disciplines_students.StudentID
+                FROM `disciplines_students`
+                WHERE disciplines_students.DisciplineID = disciplines_groups.DisciplineID AND
+                    disciplines_students.StudentID = view_students.StudentID
+            )
+    ); 
 
 
 CREATE OR REPLACE VIEW `view_roadmap` AS
@@ -125,8 +129,8 @@ CREATE OR REPLACE VIEW `view_roadmap` AS
             submodules.Type AS 'SubmoduleType',
             # enum('CurrentControl','LandmarkControl')
             submodules.isUsed AS 'SubmoduleIsUsed'
-    FROM `submodules`
-    INNER JOIN `modules` ON submodules.ModuleID = modules.ID;
+        FROM `modules`
+        INNER JOIN `submodules` ON submodules.ModuleID = modules.ID;
 
 
 CREATE OR REPLACE VIEW `view_rating` AS
@@ -135,26 +139,26 @@ CREATE OR REPLACE VIEW `view_rating` AS
             rating_table.Rate,
             rating_table.Date,
             rating_table.TeacherID
-    FROM `view_roadmap`
-    LEFT JOIN `rating_table` ON rating_table.SubmoduleID = view_roadmap.SubmoduleID 
-    INNER JOIN `view_students` ON rating_table.StudentID = view_students.StudentID; 
+        FROM `view_roadmap`
+        LEFT JOIN `rating_table` ON rating_table.SubmoduleID = view_roadmap.SubmoduleID 
+        INNER JOIN `view_students` ON rating_table.StudentID = view_students.StudentID; 
 
 
 
 CREATE OR REPLACE VIEW `view_rating_result` AS
     SELECT  view_rating.StudentID,
             view_rating.DisciplineID,  
-            SUM(view_rating.Rate*(view_rating.ModuleType = "regular")) AS 'RateRegular',
-            SUM(view_rating.Rate*(view_rating.ModuleType = "extra")) AS 'RateExtra',
-            SUM(view_rating.Rate*(view_rating.ModuleType = "bonus")) AS 'RateBonus',
-            (SELECT view_rating.Rate*(view_rating.ModuleType = "exam")
-                ORDER BY    view_rating.ModuleType = "exam" DESC, 
+            SUM(view_rating.Rate*(view_rating.ModuleType = 'regular')) AS 'RateRegular',
+            SUM(view_rating.Rate*(view_rating.ModuleType = 'extra')) AS 'RateExtra',
+            SUM(view_rating.Rate*(view_rating.ModuleType = 'bonus')) AS 'RateBonus',
+            (SELECT view_rating.Rate*(view_rating.ModuleType = 'exam')
+                ORDER BY    view_rating.ModuleType = 'exam' DESC,
                             (view_rating.Rate IS NULL) ASC, 
                             view_rating.SubmoduleOrderNum DESC 
                 LIMIT 1
             ) AS 'RateExam'
-    FROM `view_rating`
-    WHERE view_rating.Rate IS NOT NULL
-    GROUP BY view_rating.StudentID, view_rating.DisciplineID;
+        FROM `view_rating`
+        WHERE view_rating.Rate IS NOT NULL
+        GROUP BY view_rating.StudentID, view_rating.DisciplineID;
 
 
-- 
GitLab