使用选择计数创建存储过程

时间:2021-05-20 01:22:29

标签: mysql sql stored-procedures

我对创建过程非常陌生,正在寻找有关我的代码的一些指导。我无法弄清楚如何输出被指导的学生人数。我试图输出以下语句:创建一个名为 MentoringCount 的存储过程,它将显示教授姓名和他/她正在指导的学生人数。按教授姓名对输出进行排序。

delimiter //
create procedure MentoringCount()
Begin
SELECT p.ProfessorName from professor p
join lab10.student_professor SP 
on (S.studentno = SP.studentno) 
where SP.mentored = 1
SELECT COUNT (Mentor)
FROM student_professor
order by p.ProfessorName;
END //
Delimiter ;

call mentoredStudents();

学生表:

studentno
studentprogram
phoneno
age
firstname
lastname

教授表:

ProfessorId
ProfessorProgram
PhoneNo
Age
ProfessorName

student_professor 表:

student_professor_id
ProfessorId
StudentNo
Mentor

1 个答案:

答案 0 :(得分:1)

在存储过程中执行此查询和在正常情况下执行此查询没有区别。

您只需要连接表并使用 COUNT(*)GROUP BY。使用 LEFT JOIN 这样您将获得零计数。

delimiter //
CREATE PROCEDURE MentoringCount()
BEGIN
    SELECT p.professorName, IFNULL(COUNT(sp.student_professor_id), 0) AS students
    FROM professor AS p
    LEFT JOIN student_professor AS sp 
        ON sp.professorID = p.professorID AND sp.Mentored = 1
    GROUP BY p.professorID
    ORDER BY p.professorName
END;
//
相关问题