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

reports sql

parent c6c0625e
Branches
Tags
No related merge requests found
...@@ -3228,14 +3228,19 @@ CREATE FUNCTION `GetRateForDisc` ( `StudentID` INT, ...@@ -3228,14 +3228,19 @@ CREATE FUNCTION `GetRateForDisc` ( `StudentID` INT,
) RETURNS int(11) ) RETURNS int(11)
NO SQL NO SQL
BEGIN BEGIN
RETURN ( SELECT SUM(rating_table.Rate) DECLARE rate;
FROM `rating_table` SET rate = -1;
INNER JOIN `submodules` ON rating_table.SubmoduleID = submodules.ID
INNER JOIN `modules` ON submodules.ModuleID = modules.ID AND SELECT SUM(rating_table.Rate)
DisciplineID = modules.DisciplineID INTO rate
WHERE rating_table.StudentID = StudentID FROM `rating_table`
LIMIT 1 INNER JOIN `submodules` ON rating_table.SubmoduleID = submodules.ID
); INNER JOIN `modules` ON submodules.ModuleID = modules.ID AND
DisciplineID = modules.DisciplineID
WHERE rating_table.StudentID = StudentID
LIMIT 1;
RETURN rate;
END // END //
...@@ -3656,4 +3661,88 @@ BEGIN ...@@ -3656,4 +3661,88 @@ BEGIN
END // END //
DROP PROCEDURE IF EXISTS GetReports//
CREATE PROCEDURE `GetReports` ( IN `StudyGroupID` INT
)
NO SQL
BEGIN
SELECT students.ID AS 'StudentID',
students.LastName,
students.FirstName,
students.SecondName,
disciplines.ID,
GetRateForDisc(students.ID, disciplines.ID) AS 'Rate',
GetMaxRateForDisc(disciplines.ID) AS 'MaxRate'
FROM `students`
LEFT JOIN `disciplines` ON disciplines.ID IN
(
SELECT disciplines_groups.DisciplineID
FROM `disciplines_groups`
WHERE disciplines_groups.StudyGroupID = StudyGroupID
UNION DISTINCT
SELECT disciplines_students.DisciplineID
FROM `disciplines_students`
INNER JOIN `students` ON disciplines_students.ID = students.ID
WHERE students.StudyGroupID = StudyGroupID
)
INNER JOIN `subjects` ON disciplines.SubjectID = subjects.ID
WHERE students.StudyGroupID = StudyGroupID;
END //
-- DROP PROCEDURE IF EXISTS GetReports//
-- CREATE PROCEDURE `GetReports` ( IN `StudyGroupID` INT
-- )
-- NO SQL
-- BEGIN
-- -- CREATE TEMPORARY TABLE IF NOT EXISTS `temp_disciplines` (
-- -- `DisciplineID` int(11) NOT NULL,
-- -- `MaxRate` int(11) NOT NULL DEFAULT '0',
-- -- PRIMARY KEY (`DisciplineID`)
-- -- ) ENGINE=MEMORY DEFAULT CHARSET=utf8 AS (
-- -- SELECT disciplines_groups.DisciplineID,
-- -- 0 AS 'MaxRate'
-- -- FROM `disciplines_groups`
-- -- WHERE disciplines_groups.StudyGroupID = StudyGroupID
-- -- UNION DISTINCT
-- -- SELECT disciplines_students.DisciplineID,
-- -- 0 AS 'MaxRate'
-- -- FROM `disciplines_students`
-- -- INNER JOIN `students` ON disciplines_students.ID = students.ID
-- -- WHERE students.StudyGroupID = StudyGroupID
-- -- );
-- CREATE TEMPORARY TABLE IF NOT EXISTS `temp_disciplines`
-- SELECT disciplines_groups.DisciplineID,
-- 0 AS 'MaxRate'
-- FROM `disciplines_groups`
-- WHERE disciplines_groups.StudyGroupID = StudyGroupID
-- UNION DISTINCT
-- SELECT disciplines_students.DisciplineID,
-- 0 AS 'MaxRate'
-- FROM `disciplines_students`
-- INNER JOIN `students` ON disciplines_students.ID = students.ID
-- WHERE students.StudyGroupID = StudyGroupID;
-- UPDATE `temp_disciplines`
-- SET temp_disciplines.MaxRate = GetMaxRateForDisc(temp_disciplines.DisciplineID);
-- SELECT students.ID AS 'StudentID',
-- temp_disciplines.DisciplineID,
-- temp_disciplines.MaxRate,
-- GetRateForDisc(students.ID, temp_disciplines.DisciplineID) AS 'Rate'
-- FROM `students`
-- LEFT JOIN `temp_disciplines` ON 1=1
-- WHERE students.StudyGroupID = StudyGroupID;
-- END //
DELIMITER ; DELIMITER ;
\ No newline at end of file
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