0

我已决定自学 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
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_id 时,它会从帖子表中的相应行返回帖子数据,而且在 author_id 列上调用 getPerson 过程,以便返回的单个结果将包含以下字段:post_id, long_name, index_name, body_text, created

我已经试错了几个小时,虽然我可能曾经有过正确的方法(在 getPerson 的结果上使用连接?),但我的 sql 语法并没有超出单语句 MySQL 调用的范围来自 PHP。我的问题是:

  1. 这是我想做的常见/合理的方法还是有更好的方法?(我不想使用脚本语言)
  2. 如果是这样,有人可以分享如何做到这一点吗?
  3. 我对这种事情使用程序是正确的,还是一个功能一样好/更好?

谢谢你的帮助!

4

1 回答 1

0

为什么不创建一个名为viewPeoplePosts的视图,它结合了People 和他们的 Posts。然后你可以修改你的存储过程来查询视图。让视图完成所有艰苦的工作,让存储过程简单地返回结果。

于 2011-08-09T11:13:33.773 回答