我创建了2个表。一个包含5个高尔夫球场(名称和地址)。另一个是每个高尔夫球场所有18洞的标准码和码数(链接到球场的外键)。我创建了一个函数getYards来返回一个课程的码数。我创建了第二个函数getPar来返回一个课程的总par。这些都是工作。我现在需要创建一个视图来显示课程名称以及使用2个功能的标准码和码数。 getYards函数:
DELIMITER $$
CREATE FUNCTION getYards (id INT)
RETURNS INT (5)
BEGIN
DECLARE totalyards INT;
SELECT SUM(hole_yards) INTO totalyards FROM golf_holes WHERE id=golf_id;
RETURN totalyards;
END$$
DELIMITER ;
使用hole_par而不是码,getPar的函数非常相似。
所以现在我想使用getPar和getYards函数创建一个包含课程名称,par和码数的视图。我已经尝试过搜索,但我知之甚少。我知道这很模糊,但任何人都可以帮助我......保持简单!提前完成。
近40年来,我一直是cobol程序员。我正在尝试学习MySQL,因此对SQL知之甚少。
答案 0 :(得分:0)
如果您想保持简单,我建议您不要在视图定义中使用存储的函数。
相反,你可以加入这两个表。
这样的事情对你有用:
create or replace view v_golf_courses as
select golf_courses.id as golf_course_id,
golf_courses.name as golf_course_name,
sum(golf_holes.yards) as course_yardage,
sum(golf_holes.par) as course_par
from golf_courses
inner join golf_holes on golf_holes.golf_course_id = golf_courses.id
group by golf_courses.id, golf_courses.name;
答案 1 :(得分:0)
假设您的课程表中的id列也名为golf_id
SELECT name, getPar(golf_id) as par, getYards(golf_id) as yards
FROM courses
但是你并不真正需要UDF:
SELECT a.name, sum(b.hole_par) as total_par, sum(b.hole_yards) as total_yards
FROM courses a
JOIN golf_holes b
ON a.golf_id = b.golf_id
GROUP BY a.golf_id