从不同的表中减去并添加两列

时间:2015-10-31 11:58:36

标签: sql sql-server aggregate-functions

我想从不同的表中减去并添加两列。

表格:

BookID | BookName | Author | Edition | PublishingYear | copies| Shelf | Row
   1   |   SQL    | Robert |    3    |     2005       | 3     |    A  |third

table问题:(在此我创建了与tblPerson的连接以显示PersonName而不是PersonID)

BookID | BookName | DateIssue  | ReturnDate | PersonName | copies
   1   |  SQL     | 2015-10-12 | 2015-10-12 |     john   | 1

表返回:

BookID | BookName | DateIssue  | ReturnDate | PersonName | copies
   1   |  SQL     | 2015-10-12 | 2015-10-12 |     john   | 1

Sql Query:

Select (tblBook.copies) - (tblIssue.copies)
FROm tblBook
FULL join tblIssue
ON tblBook.copies = tblIssue.copies

此查询不会减去这两列(副本)。 我想在发行本书时从tblbook列副本(原始值)中减去列(副本)tblIssue。 当我从tbl Return返回本书时,它会在tblBook中的列(副本)中给出原始值。

1 个答案:

答案 0 :(得分:1)

当你进行连接时,你需要连接表上的表来连接表格。

在副本上连接两个表没有逻辑意义,所以改为将它加入主键外键引用BookID。

Select (tblBook.copies) - (tblIssue.copies)
FROm tblBook
FULL join tblIssue
ON tblBook.BookId = tblIssue.BookId

如果没有否定,这将产生以下结果。

BookID | BookName | Author | Edition | PublishingYear | copies| Shelf | Row | BookID | BookName | DateIssue  | ReturnDate | PersonName | copies
   1   |   SQL    | Robert |    3    |     2005       | 3     |    A  |third|    1   |  SQL     | 2015-10-12 | 2015-10-12 |     john   | 1

从而减去应该等于3-1的{​​{1}}。但是,考虑加入结果应该是什么然后计划出你的加入策略总是很重要。

编辑1

在给定时间可以获得多少本书的示例查询

2

这将产生一个给定日期的汇总结果,对于这个案例,2015-10-12,你有多少本书是有用的,它不是最优的,但是你给的,看起来它是最好的溶液