我们有这些表:
player(id,salary,bonus)
productivity_per_year(id,goals,year)
生产力表(ID、目标、年份)
+----+-------+------+
| ID | Goals | Year |
+----+-------+------+
| 01 | 20 | 2001 |
| 01 | 30 | 2002 |
| 02 | 30 | 2001 |
| 02 | 40 | 2002 |
+----+-------+------+
问题是,如果球员在过去两年(2001 年和 2002 年)打进 30 球或更多球,我该如何提高球员的奖金。例如,在这里我希望 id=02 的玩家获得奖金,因为他在 2001 和 2002 的得分都 >=30 。
我正在使用以下程序,但它失败了,因为它为两个玩家增加了奖励!!!
create or replace
procedure football
AS
BEGIN
update player p
set p.bonus = p.bonus + 500
where p.id in
(select s.id from productivity s where
s.goals >30
and s.year>=2001
and s.id = p.id
);
END;