我为我的标题含糊而道歉,因为我总是很难描述在SQL方面需要做些什么。我正在使用微软访问,我总共有3个表:Credits,Orders和Books,如下所示。我需要创建一个更新查询,根据他们订购的书籍以及每本书的相应学分数来更新每个学生的现有学分数。
例如,学生B-17以24学分开始,但在更新查询后,应将学生的学分改为32学分。
学分表
Student ID Number of Credits
B-17 24
F-59 30
订单表
Student ID Book ID
B-17 101
B-17 102
F-59 101
F-59 105
书籍表
Book ID Book Title Credits
101 English I 3
102 Accounting 5
105 Calculus 5
编辑:我需要更新现有记录,而不是将其更改为更新未来订单的位置。
答案 0 :(得分:1)
您需要在触发器中执行此操作,其中更新仅访问刚刚添加的订单(新插入的订单),而不是之前添加的所有订单。
Update credits c set
credits = credits +
(Select sum(credits) from orders
where student_id = c.student_Id)
或者,您需要在订单表中标记每一行是否已计入信用表。
Update credits c set
credits = credits +
(Select sum(credits) from orders
where student_id = c.student_Id
and added = 0)
然后设置标志以指示已添加订单。
Update orders set added = 1
where added = 0