使用连接创建存储过程?
Posted
技术标签:
【中文标题】使用连接创建存储过程?【英文标题】:creating a stored procedure with join? 【发布时间】:2021-05-19 01:08:46 【问题描述】:在创建存储过程并尝试获取连接和组的输出时,我是否需要在另一个查询中编写代码?当我运行代码时,它说该过程已经存在。所以我不确定如何在创建过程时获得正确的输入。
问题:创建一个名为 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;
【问题讨论】:
把“END”关键字移到最后。 【参考方案1】:您的代码有点混乱,因为您从创建存储过程开始,但在创建一个开始良好但结束很糟糕的 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();
【讨论】:
问题是它说创建的过程已经存在并且不会输出任何东西。在这种情况下我会创建一个新查询吗? @Steve 用DROP PROCEDURE...删除现有程序以上是关于使用连接创建存储过程?的主要内容,如果未能解决你的问题,请参考以下文章