MYSQL DATABASE创建过程

时间:2014-08-11 23:04:18

标签: mysql

对你们有疑问,

尝试为我的mysql表创建一个过程,但我需要一些帮助......

IM完全阻止......

我需要创建一个过程,在我的表中显示父项名称,但表格显示父项id

离。

(DELIMITER //
CREATE PROCEDURE fetch_animal_parents (IN animal_id INT, OUT animal_name VARCHAR(10))
BEGIN
DECLARE animal_mom INT DEFAULT 0 ;
DECLARE animal_dad INT DEFAULT 0 ;
DECLARE animal_name_mom VARCHAR(10) ;
DECLARE animal_name_dad VARCHAR(10) ;
SELECT name INTO animal_name, (SELECT name  FROM animal WHERE id = child.mother_id)  INTO animal_name_mom,
 (SELECT name FROM animal WHERE id = child.father_id)  INTO animal_name_dad
FROM animal AS child ;
END //)

我做错了什么......

............................................... ................................................. < / p>

任何输入......

1 个答案:

答案 0 :(得分:1)

1)为什么你在不在任何地方使用它们时选择妈妈/爸爸的名字?

2)我想你的程序应该以儿童动物身份作为输入,并给妈妈&amp;爸爸的名字作为输出(这是你的程序名称所暗示的)。在这种情况下,你需要有2个输出值,或者你需要将这些名称连接成1个变量并返回它们。

3)@VMai建议使用2种连接格式,我同意。查询将类似..

SELECT mom.name,dad.name INTO animal_name_mom, animal_name_dad
FROM (select mother_id,father_id from animal where id = <precedure_input>) AS `child`
INNER JOIN (select id,name from animal) AS `mom` ON (mom.id=child.mother_id)
INNER JOIN (select id,name from animal) AS `dad` ON (dad.id=child.father_id)

我看到你至少尝试过自己的东西(你很困惑)。我建议你在尝试程序之前先学习一些mysql的基本语法/关键字/函数。学习使用GROUP BYJOIN的变体,你可以处理很多基本的查询。