我可以在表中使用计算列来从另一个表列中获取数据

时间:2014-06-10 16:27:28

标签: sql sql-server

我有两张桌子:a)BookFine和b)IssuedBook。

在BookFine中,我有列RegNo和LateFee,我只存储延迟的延迟费用 针对学生注册号的书籍。

在IssuedBook中我有列RegNo, BookTitle,IssueDate和ReturnDate。

我想实现涉及两个表的这个事情:

  

每当学生在ReturnDate之后推迟一本书时(如果   ReturnDate<当前日期)然后是BookFine表中的LateFee列   如果BookFine.RegNo = IssuedBook.RegNo。

,则应增加1

我已经通过SQL Job Schedules成功完成了这项工作,但我想知道这是不是应该这样做,还是有其他好办法。请注意,我使用的是SQL Server 2008 r2。

感谢。

1 个答案:

答案 0 :(得分:0)

您正在寻找的语法是:

UPDATE BookFine 
   SET LateFee = LateFee +1
 WHERE RegNo IN (SELECT RegNo FROM IssuedBook WHERE ReturnDate < CurrentDate)

但是您需要处理案例,例如在BookFine中没有此学生的记录,这可以通过首先运行prep语句来初始化零记录来完成。 (将这两者放在一个交易中就可以防止误报0记录)

INSERT INTO BookFine (RegNo, LateFee)
SELECT RegNo, 0
  FROM IssuedBook
 WHERE ReturnDate < CurrentDate
   AND RegNo NOT IN (SELECT RegNo FROM BookFine)