首页 > 解决方案 > 使用连接创建存储过程?

问题描述

创建存储过程并尝试获取连接和组的输出时,是否需要在另一个查询中编写代码?当我运行代码时,它说该过程已经存在。所以我不确定如何在创建过程时获得正确的输入。

问题:创建一个名为 MentoredStudents 的存储过程,它将显示学生的名字和姓氏。只有正在接受指导的学生才能被选中。按学生姓氏对输出进行排序,然后是名字。

表 student 包含:firstname, lastname, studentno

表 Student_Professor 包含列导师('1' 被指导 0 没有),studentno

我的查询

    DELIMITER //
CREATE PROCEDURE MentoredStudents()
BEGIN
SELECT firstname, lastname 
FROM lab10.student s;
END //
DELIMITER ;
SELECT firstname, lastname
FROM lab10.student s
JOIN lab10.student_professor sp
ON s.studentno = sp.studentno
AND sp.mentor = 1
GROUP BY s.lastname, s.firstname;

标签: mysqlstored-procedures

解决方案


您的代码有点混乱,因为您从创建存储过程开始,但在创建一个开始良好但结束很糟糕的 SELECT 之前关闭了它。

你想要的是

delimiter //
create procedure mentoredStudents()
Begin
SELECT S.firstname, S.lastname from lab10.student S 
    join lab10.student_professor SP 
    on (S.studentno = SP.studentno) 
    where SP.mentored = 1
    order by S.lastname, S.firstname;
END //
Delimiter ;

call mentoredStudents();

推荐阅读