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

db ref pt4: fix SearchTeachers, remove view_disciplines_teachers

parent 356fabab
Branches
Tags
No related merge requests found
...@@ -37,8 +37,9 @@ DROP PROCEDURE IF EXISTS GetReports// ...@@ -37,8 +37,9 @@ DROP PROCEDURE IF EXISTS GetReports//
# ------------------------------------------------------------------------------------------- # -------------------------------------------------------------------------------------------
DROP PROCEDURE IF EXISTS GetSettings// DROP PROCEDURE IF EXISTS GetSettings//
CREATE PROCEDURE `GetSettings`(IN `pKey` VARCHAR(50) CHARSET utf8) CREATE PROCEDURE `GetSettings` (
NO SQL IN `pKey` VARCHAR(50) CHARSET utf8
) NO SQL
BEGIN BEGIN
SELECT general_settings.* SELECT general_settings.*
FROM `general_settings` FROM `general_settings`
...@@ -52,8 +53,9 @@ END // ...@@ -52,8 +53,9 @@ END //
# ------------------------------------------------------------------------------------------- # -------------------------------------------------------------------------------------------
DROP PROCEDURE IF EXISTS GetSemesterInfo// DROP PROCEDURE IF EXISTS GetSemesterInfo//
CREATE PROCEDURE `GetSemesterInfo` (IN `pSemesterID` INT) CREATE PROCEDURE `GetSemesterInfo` (
NO SQL IN `pSemesterID` INT
) NO SQL
BEGIN BEGIN
SELECT semesters.Num As 'Num', SELECT semesters.Num As 'Num',
semesters.Year As 'Year' semesters.Year As 'Year'
...@@ -63,8 +65,8 @@ BEGIN ...@@ -63,8 +65,8 @@ BEGIN
END // END //
DROP PROCEDURE IF EXISTS GetSemesters// DROP PROCEDURE IF EXISTS GetSemesters//
CREATE PROCEDURE `GetSemesters` () CREATE PROCEDURE `GetSemesters` (
NO SQL ) NO SQL
BEGIN BEGIN
SELECT semesters.ID, SELECT semesters.ID,
semesters.Year, semesters.Year,
...@@ -80,8 +82,8 @@ END // ...@@ -80,8 +82,8 @@ END //
# ------------------------------------------------------------------------------------------- # -------------------------------------------------------------------------------------------
DROP PROCEDURE IF EXISTS GetFaculties// DROP PROCEDURE IF EXISTS GetFaculties//
CREATE PROCEDURE `GetFaculties` ( ) CREATE PROCEDURE `GetFaculties` (
NO SQL ) NO SQL
BEGIN BEGIN
SELECT faculties.ID, SELECT faculties.ID,
faculties.Name, faculties.Name,
...@@ -95,8 +97,9 @@ END // ...@@ -95,8 +97,9 @@ END //
# ------------------------------------------------------------------------------------------- # -------------------------------------------------------------------------------------------
DROP PROCEDURE IF EXISTS GetDepartments// DROP PROCEDURE IF EXISTS GetDepartments//
CREATE PROCEDURE `GetDepartments` (IN `pFacultyID` INT) CREATE PROCEDURE `GetDepartments` (
NO SQL IN `pFacultyID` INT
) NO SQL
BEGIN BEGIN
SELECT departments.ID, SELECT departments.ID,
departments.Name departments.Name
...@@ -111,8 +114,9 @@ END // ...@@ -111,8 +114,9 @@ END //
# ------------------------------------------------------------------------------------------- # -------------------------------------------------------------------------------------------
DROP PROCEDURE IF EXISTS GetSpecializations// DROP PROCEDURE IF EXISTS GetSpecializations//
CREATE PROCEDURE `GetSpecializations` (IN `pFacultyID` INT) CREATE PROCEDURE `GetSpecializations` (
NO SQL IN `pFacultyID` INT
) NO SQL
BEGIN BEGIN
SELECT specializations.ID, SELECT specializations.ID,
specializations.Name, specializations.Name,
...@@ -128,8 +132,8 @@ END // ...@@ -128,8 +132,8 @@ END //
# ------------------------------------------------------------------------------------------- # -------------------------------------------------------------------------------------------
DROP PROCEDURE IF EXISTS GetJobPositions// DROP PROCEDURE IF EXISTS GetJobPositions//
CREATE PROCEDURE `GetJobPositions` ( ) CREATE PROCEDURE `GetJobPositions` (
NO SQL ) NO SQL
BEGIN BEGIN
SELECT job_positions.ID, SELECT job_positions.ID,
job_positions.Name job_positions.Name
...@@ -143,13 +147,13 @@ END // ...@@ -143,13 +147,13 @@ END //
# ------------------------------------------------------------------------------------------- # -------------------------------------------------------------------------------------------
DROP PROCEDURE IF EXISTS GetGrades// DROP PROCEDURE IF EXISTS GetGrades//
CREATE PROCEDURE `GetGrades` ( ) CREATE PROCEDURE `GetGrades` (
NO SQL ) NO SQL
BEGIN BEGIN
SELECT grades.ID AS 'ID', SELECT grades.ID,
grades.Num AS 'Num', grades.Num,
grades.Degree AS 'Degree' grades.Degree
FROM `grades` FROM `grades`
ORDER BY grades.ID; ORDER BY grades.ID;
END // END //
...@@ -159,9 +163,10 @@ END // ...@@ -159,9 +163,10 @@ END //
# ------------------------------------------------------------------------------------------- # -------------------------------------------------------------------------------------------
DROP PROCEDURE IF EXISTS GetGroups// DROP PROCEDURE IF EXISTS GetGroups//
CREATE PROCEDURE `GetGroups` CREATE PROCEDURE `GetGroups` (
(IN `pGradeID` INT, IN `pFacultyID` INT) IN `pGradeID` INT,
NO SQL IN `pFacultyID` INT
) NO SQL
BEGIN BEGIN
SELECT view_groups.GroupID AS 'ID', SELECT view_groups.GroupID AS 'ID',
view_groups.GroupNum, view_groups.GroupNum,
...@@ -177,8 +182,9 @@ END // ...@@ -177,8 +182,9 @@ END //
# get all general study groups, that takes this course # get all general study groups, that takes this course
DROP PROCEDURE IF EXISTS GetGroupsForDiscipline// DROP PROCEDURE IF EXISTS GetGroupsForDiscipline//
CREATE PROCEDURE `GetGroupsForDiscipline` (IN `pDisciplineID` INT) CREATE PROCEDURE `GetGroupsForDiscipline` (
NO SQL IN `pDisciplineID` INT
) NO SQL
BEGIN BEGIN
SELECT view_groups.GroupID AS 'ID', SELECT view_groups.GroupID AS 'ID',
view_groups.GroupNum, view_groups.GroupNum,
...@@ -201,15 +207,16 @@ END // ...@@ -201,15 +207,16 @@ END //
# ------------------------------------------------------------------------------------------- # -------------------------------------------------------------------------------------------
DROP PROCEDURE IF EXISTS GetSubjects// DROP PROCEDURE IF EXISTS GetSubjects//
CREATE PROCEDURE `GetSubjects` (IN `pFacultyID` INT) CREATE PROCEDURE `GetSubjects` (
NO SQL IN `pFacultyID` INT
) NO SQL
BEGIN BEGIN
SELECT subjects.ID, SELECT subjects.ID,
subjects.Name, subjects.Name,
subjects.Abbr subjects.Abbr
FROM `subjects_faculties` FROM `subjects_faculties`
INNER JOIN `subjects` ON subjects_faculties.SubjectID = subjects.ID INNER JOIN `subjects` ON subjects_faculties.SubjectID = subjects.ID
WHERE subjects_faculties.FacultyID = pFacultyID WHERE subjects_faculties.FacultyID = pFacultyID
ORDER BY subjects.Name ASC; ORDER BY subjects.Name ASC;
END // END //
...@@ -219,6 +226,7 @@ END // ...@@ -219,6 +226,7 @@ END //
# Label: accounts # Label: accounts
# ------------------------------------------------------------------------------------------- # -------------------------------------------------------------------------------------------
# TODO: deprecated
DROP PROCEDURE IF EXISTS GetAccountInfo// DROP PROCEDURE IF EXISTS GetAccountInfo//
CREATE PROCEDURE `GetAccountInfo` ( IN `pUserID` INT ) CREATE PROCEDURE `GetAccountInfo` ( IN `pUserID` INT )
NO SQL NO SQL
...@@ -238,13 +246,12 @@ BEGIN ...@@ -238,13 +246,12 @@ BEGIN
LIMIT 1; LIMIT 1;
END // END //
# TODO: deprecated
DROP PROCEDURE IF EXISTS GetPersonalInfo// DROP PROCEDURE IF EXISTS GetPersonalInfo//
CREATE PROCEDURE `GetPersonalInfo` ( CREATE PROCEDURE `GetPersonalInfo` (
IN `pUserID` INT, IN `pUserID` INT,
IN `pSemesterID` INT IN `pSemesterID` INT
) ) NO SQL
NO SQL
BEGIN BEGIN
DECLARE vAccountType INT DEFAULT -1; DECLARE vAccountType INT DEFAULT -1;
SELECT user_roles.Type INTO vAccountType SELECT user_roles.Type INTO vAccountType
...@@ -293,6 +300,85 @@ BEGIN ...@@ -293,6 +300,85 @@ BEGIN
END IF; END IF;
END // END //
DROP PROCEDURE IF EXISTS GetFullInfo//
CREATE PROCEDURE `GetFullInfo` (
IN `pUserID` INT,
IN `pSemesterID` INT
) NO SQL
BEGIN
DECLARE vAccountType enum('student', 'teacher') DEFAULT -1;
SELECT user_roles.Type INTO vAccountType
FROM `accounts`
INNER JOIN `user_roles` ON accounts.UserRoleID = user_roles.ID
WHERE accounts.ID = pUserID
LIMIT 1;
# type 1: student
# 2: teacher
IF vAccountType = 'student' THEN
SELECT # student info
view_students.LastName,
view_students.FirstName,
view_students.SecondName,
view_students.StudentID,
view_students.GradeID,
view_students.GradeNum,
view_students.GroupID,
view_students.GroupNum,
view_students.GroupName,
view_students.Degree,
view_students.SpecID,
view_students.SpecName,
view_students.SpecAbbr,
view_students.FacultyID,
view_students.FacultyName,
view_students.FacultyAbbr,
# account info
accounts.ID,
accounts.Login,
accounts.EMail,
user_roles.Type,
user_roles.RoleName AS 'Role',
user_roles.Mark AS 'RoleMark',
accounts.IsEnabled,
accounts.ActivationCode AS 'Code',
accounts.UserAgent
FROM `view_students`
INNER JOIN `accounts` ON accounts.ID = view_students.AccountID
INNER JOIN `user_roles` ON user_roles.ID = accounts.UserRoleID
WHERE view_students.AccountID = pUserID AND
view_students.SemesterID = pSemesterID
LIMIT 1;
ELSE
SELECT # teacher info
view_teachers.LastName,
view_teachers.FirstName,
view_teachers.SecondName,
view_teachers.TeacherID,
view_teachers.DepID,
view_teachers.DepName,
view_teachers.JobPositionName,
view_teachers.FacultyID,
view_teachers.FacultyName,
view_teachers.FacultyAbbr,
# account info
accounts.ID,
accounts.Login,
accounts.EMail,
user_roles.Type,
user_roles.RoleName AS 'Role',
user_roles.Mark AS 'RoleMark',
accounts.IsEnabled,
accounts.ActivationCode AS 'Code',
accounts.UserAgent
FROM `view_teachers`
INNER JOIN `accounts` ON accounts.ID = view_teachers.AccountID
INNER JOIN `user_roles` ON user_roles.ID = accounts.UserRoleID
WHERE view_teachers.AccountID = pUserID
LIMIT 1;
END IF;
END //
...@@ -300,6 +386,7 @@ END // ...@@ -300,6 +386,7 @@ END //
# Label: teachers # Label: teachers
# ------------------------------------------------------------------------------------------- # -------------------------------------------------------------------------------------------
# TODO: used in php
DROP PROCEDURE IF EXISTS GetTeachersByFaculty// DROP PROCEDURE IF EXISTS GetTeachersByFaculty//
# CREATE PROCEDURE `GetTeachersByFaculty` (IN `pFacultyID` INT) # CREATE PROCEDURE `GetTeachersByFaculty` (IN `pFacultyID` INT)
# NO SQL # NO SQL
...@@ -342,40 +429,48 @@ DROP PROCEDURE IF EXISTS GetTeachersForDiscipline// ...@@ -342,40 +429,48 @@ DROP PROCEDURE IF EXISTS GetTeachersForDiscipline//
CREATE PROCEDURE `GetTeachersForDiscipline`(IN `pDisciplineID` INT) CREATE PROCEDURE `GetTeachersForDiscipline`(IN `pDisciplineID` INT)
NO SQL NO SQL
BEGIN BEGIN
SELECT view_disciplines_teachers.TeacherID AS 'ID', DECLARE vAuthorID INT DEFAULT -1;
view_disciplines_teachers.LastName, SET vAuthorID = GetDisciplineProperty(pDisciplineID, 'author');
view_disciplines_teachers.FirstName,
view_disciplines_teachers.SecondName, SELECT view_teachers.TeacherID AS 'ID',
view_disciplines_teachers.JobPositionID, view_teachers.LastName,
view_disciplines_teachers.JobPositionName, view_teachers.FirstName,
view_disciplines_teachers.DepID, view_teachers.SecondName,
view_disciplines_teachers.DepName, view_teachers.JobPositionID,
view_disciplines_teachers.FacultyID, view_teachers.JobPositionName,
view_disciplines_teachers.FacultyAbbr, view_teachers.DepID,
view_disciplines_teachers.IsAuthor view_teachers.DepName,
FROM `view_disciplines_teachers` view_teachers.FacultyID,
WHERE view_disciplines_teachers.DisciplineID = pDisciplineID view_teachers.FacultyAbbr,
ORDER BY view_disciplines_teachers.IsAuthor DESC, ( view_teachers.TeacherID = vAuthorID ) AS 'IsAuthor'
view_disciplines_teachers.LastName ASC, FROM `disciplines_teachers`
view_disciplines_teachers.FirstName ASC; INNER JOIN `view_teachers` ON view_teachers.TeacherID = disciplines_teachers.TeacherID
WHERE disciplines_teachers.DisciplineID = pDisciplineID
ORDER BY view_teachers.TeacherID = vAuthorID DESC,
view_teachers.LastName ASC,
view_teachers.FirstName ASC;
END // END //
# get teachers, that don't teach course # get teachers, that don't teach course
DROP PROCEDURE IF EXISTS SearchTeachers// DROP PROCEDURE IF EXISTS SearchTeachers//
CREATE PROCEDURE `SearchTeachers` CREATE PROCEDURE `SearchTeachers` (
( IN `pFacultyID` INT, IN `pDepartmentID` INT, IN `pFacultyID` INT,
IN `pFullName` VARCHAR(100) CHARSET utf8, IN `pDepartmentID` INT,
# order: LastName + FirstName + SecondName IN `pFullName` VARCHAR(100) CHARSET utf8,
IN `pDisciplineID` INT ) # order: LastName + FirstName + SecondName
NO SQL IN `pDisciplineID` INT
) NO SQL
BEGIN BEGIN
DECLARE vAuthorID INT DEFAULT -1; DECLARE vAuthorID INT DEFAULT -1;
SELECT disciplines.AuthorID INTO vAuthorID SET vAuthorID = GetDisciplineProperty(pDisciplineID, 'author');
FROM `disciplines`
WHERE disciplines.ID = pDisciplineID CREATE TEMPORARY TABLE IF NOT EXISTS tDiscTeachers AS (
LIMIT 1; SELECT disciplines_teachers.TeacherID
FROM disciplines_teachers
WHERE disciplines_teachers.DisciplineID = pDisciplineID
);
SELECT view_teachers.TeacherID AS 'ID', SELECT view_teachers.TeacherID AS 'ID',
view_teachers.LastName, view_teachers.LastName,
...@@ -384,14 +479,21 @@ BEGIN ...@@ -384,14 +479,21 @@ BEGIN
view_teachers.JobPositionName, view_teachers.JobPositionName,
view_teachers.DepID, view_teachers.DepID,
view_teachers.DepName, view_teachers.DepName,
(view_teachers.TeacherID = vAuthorID) AS 'IsAuthor' ( view_teachers.TeacherID = vAuthorID ) AS 'IsAuthor'
FROM `view_teachers` FROM `view_teachers`
WHERE NOT InternalIsTeacherBounded(view_teachers.TeacherID, pDisciplineID) AND WHERE view_teachers.FacultyID = pFacultyID AND
view_teachers.FacultyID = pFacultyID AND ( pDepartmentID = 0 OR view_teachers.DepID = pDepartmentID ) AND
CONCAT( view_teachers.LastName, view_teachers.FirstName, view_teachers.SecondName) NOT EXISTS (
LIKE CONCAT('%', pFullName, '%') SELECT * FROM tDiscTeachers
ORDER BY view_teachers.FacultyID ASC,view_teachers.DepName ASC, WHERE tDiscTeachers.TeacherID = view_teachers.TeacherID
view_teachers.LastName ASC, view_teachers.FirstName ASC; LIMIT 1
) AND
CONCAT( view_teachers.LastName, ' ', view_teachers.FirstName, ' ', view_teachers.SecondName)
LIKE CONCAT('%', pFullName, '%')
ORDER BY view_teachers.FacultyID ASC,
view_teachers.DepName ASC,
view_teachers.LastName ASC,
view_teachers.FirstName ASC;
END // END //
......
DROP VIEW IF EXISTS view_disciplines_teachers;
CREATE OR REPLACE VIEW `view_groups` AS CREATE OR REPLACE VIEW `view_groups` AS
SELECT study_groups.ID AS 'GroupID', SELECT study_groups.ID AS 'GroupID',
...@@ -79,49 +83,31 @@ CREATE OR REPLACE VIEW `view_disciplines` AS ...@@ -79,49 +83,31 @@ CREATE OR REPLACE VIEW `view_disciplines` AS
INNER JOIN `grades` ON grades.ID = disciplines.GradeID; INNER JOIN `grades` ON grades.ID = disciplines.GradeID;
CREATE OR REPLACE VIEW `view_disciplines_results` AS
SELECT disciplines.ID AS 'DisciplineID',
SUM(submodules.MaxRate) AS 'DisciplineRateMax',
SUM(submodules.MaxRate*submodules.IsUsed) AS 'DisciplineRateCur'
FROM `submodules`
INNER JOIN `modules` ON modules.ID = submodules.ModuleID
RIGHT JOIN `disciplines` ON disciplines.ID = modules.DisciplineID
WHERE (modules.Type = 'regular') OR (modules.Type = 'exam' AND submodules.OrderNum = 1)
GROUP BY disciplines.ID;
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;
CREATE OR REPLACE VIEW `view_disciplines_students` AS CREATE OR REPLACE VIEW `view_disciplines_students` AS (
(SELECT disciplines_students.DisciplineID, SELECT disciplines_students.DisciplineID,
disciplines_students.Type AS 'AttachType', disciplines_students.Type AS 'AttachType',
view_students.* view_students.*
FROM `disciplines` FROM `disciplines`
LEFT JOIN `disciplines_students` ON disciplines_students.DisciplineID = disciplines.ID LEFT JOIN `disciplines_students` ON disciplines_students.DisciplineID = disciplines.ID
INNER JOIN `view_students` ON view_students.StudentID = disciplines_students.StudentID AND INNER JOIN `view_students` ON view_students.StudentID = disciplines_students.StudentID AND
view_students.SemesterID = disciplines.SemesterID view_students.SemesterID = disciplines.SemesterID
) UNION ) UNION (
(SELECT disciplines_groups.DisciplineID, SELECT disciplines_groups.DisciplineID,
NULL AS 'AttachType', NULL AS 'AttachType',
view_students.* view_students.*
FROM `disciplines` FROM `disciplines`
LEFT JOIN `disciplines_groups` ON disciplines_groups.DisciplineID = disciplines.ID LEFT JOIN `disciplines_groups` ON disciplines_groups.DisciplineID = disciplines.ID
LEFT JOIN `view_students` ON view_students.GroupID = disciplines_groups.GroupID AND LEFT JOIN `view_students` ON view_students.GroupID = disciplines_groups.GroupID AND
view_students.SemesterID = disciplines.SemesterID view_students.SemesterID = disciplines.SemesterID
WHERE NOT EXISTS WHERE NOT EXISTS (
(SELECT disciplines_students.StudentID SELECT disciplines_students.StudentID
FROM `disciplines_students` FROM `disciplines_students`
WHERE disciplines_students.DisciplineID = disciplines_groups.DisciplineID AND WHERE disciplines_students.DisciplineID = disciplines_groups.DisciplineID AND
disciplines_students.StudentID = view_students.StudentID disciplines_students.StudentID = view_students.StudentID
) )
); );
CREATE OR REPLACE VIEW `view_roadmap` AS CREATE OR REPLACE VIEW `view_roadmap` AS
...@@ -129,19 +115,31 @@ CREATE OR REPLACE VIEW `view_roadmap` AS ...@@ -129,19 +115,31 @@ CREATE OR REPLACE VIEW `view_roadmap` AS
modules.ID AS 'ModuleID', modules.ID AS 'ModuleID',
modules.Name AS 'ModuleName', modules.Name AS 'ModuleName',
modules.OrderNum AS 'ModuleOrderNum', modules.OrderNum AS 'ModuleOrderNum',
modules.Type AS 'ModuleType', modules.Type AS 'ModuleType', # enum('regular','exam', 'bonus', 'extra')
# enum('regular','exam', 'bonus', 'extra')
submodules.ID AS 'SubmoduleID', submodules.ID AS 'SubmoduleID',
submodules.Name AS 'SubmoduleName', submodules.Name AS 'SubmoduleName',
submodules.OrderNum AS 'SubmoduleOrderNum', submodules.OrderNum AS 'SubmoduleOrderNum',
submodules.MaxRate AS 'SubmoduleRate', submodules.MaxRate AS 'SubmoduleRate',
submodules.Type AS 'SubmoduleType', submodules.Type AS 'SubmoduleType', # enum('CurrentControl','LandmarkControl')
# enum('CurrentControl','LandmarkControl')
submodules.IsUsed AS 'SubmoduleIsUsed' submodules.IsUsed AS 'SubmoduleIsUsed'
FROM `modules` FROM `modules`
LEFT JOIN `submodules` ON submodules.ModuleID = modules.ID; LEFT JOIN `submodules` ON submodules.ModuleID = modules.ID;
CREATE OR REPLACE VIEW `view_disciplines_results` AS
SELECT disciplines.ID AS 'DisciplineID',
SUM(submodules.MaxRate) AS 'DisciplineRateMax',
SUM(submodules.MaxRate*submodules.IsUsed) AS 'DisciplineRateCur'
FROM `disciplines`
LEFT JOIN `modules` ON modules.DisciplineID = disciplines.ID
LEFT JOIN `submodules` ON submodules.ModuleID = modules.ID
WHERE modules.Type = 'regular' OR
(modules.Type = 'exam' AND submodules.OrderNum = 1)
GROUP BY disciplines.ID;
# without students, that haven't any rate # without students, that haven't any rate
CREATE OR REPLACE VIEW `view_rating_result` AS CREATE OR REPLACE VIEW `view_rating_result` AS
SELECT rating_table.StudentID, SELECT rating_table.StudentID,
......
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