Mysql 使用第二个存储过程中的值调用存储过程以生成单个结果?
我已经决定自学MySQL中的存储过程,但由于语法与我通常的踩踏基础(php/javascript)大不相同,我希望确定我对这些过程功能的理解是否正确,如果正确,我将如何实现我所追求的目标 目前,我有两个表格“人员”和“职位”,如下所示:Mysql 使用第二个存储过程中的值调用存储过程以生成单个结果?,mysql,stored-procedures,stored-functions,Mysql,Stored Procedures,Stored Functions,我已经决定自学MySQL中的存储过程,但由于语法与我通常的踩踏基础(php/javascript)大不相同,我希望确定我对这些过程功能的理解是否正确,如果正确,我将如何实现我所追求的目标 目前,我有两个表格“人员”和“职位”,如下所示: people person_id INT(10) first_name VARCHAR(32) last_name VARCHAR(64) posts post_id INT(10) author_id INT(10) body_text TEXT creat
people
person_id INT(10)
first_name VARCHAR(32)
last_name VARCHAR(64)
posts
post_id INT(10)
author_id INT(10)
body_text TEXT
created DATETIME
DELIMITER //
CREATE PROCEDURE getPerson(IN person INT(10))
BEGIN
SELECT CONCAT(first_name, ' ', last_name) as long_name, CONCAT(last_name, ', ', first_name) as index_name FROM people WHERE person_id = person;
END //
DELIMITER ;
由此,我创建了一个简单的通用存储过程,如下所示:
people
person_id INT(10)
first_name VARCHAR(32)
last_name VARCHAR(64)
posts
post_id INT(10)
author_id INT(10)
body_text TEXT
created DATETIME
DELIMITER //
CREATE PROCEDURE getPerson(IN person INT(10))
BEGIN
SELECT CONCAT(first_name, ' ', last_name) as long_name, CONCAT(last_name, ', ', first_name) as index_name FROM people WHERE person_id = person;
END //
DELIMITER ;
到目前为止还不错,但现在我的理解崩溃了。。。我想创建另一个名为“getPost”的过程,当传递一个post\u id时,它将从posts表中的相应行返回post数据,还将在author\u id列上调用getPerson过程,以便返回的单个结果将由以下字段组成:post\u id、long\u name、index\u name、body\u text、created
我已经试过几个小时了,虽然我可能在某一点上找到了正确的方法(在getPerson的结果上使用join?),但我的sql语法并没有扩展到PHP的单个stationMySQL调用之外。我的问题是:
谢谢你的帮助 为什么不创建一个名为viewPeoplePosts的视图,该视图将人及其帖子组合在一起。然后,您可以修改存储的进程以查询视图。让视图完成所有繁重的工作,让存储过程简单地返回结果