9...查询图书馆各书现存本数

先查询已借出图书的书号,借出本数

select book_No,count(book_No) 未归还的书的本数
from  borrow_Return
where  return_time is null
group by book_No

查询结果如下图:
在这里插入图片描述

BOOK表再和上查询结果通过book_no左外连接起起来

select book.book_No,book.book_name,quantity-isnull(x.未归还的书的本数,0) 现存本书
from book left join  (select book_No,count(book_No) 未归还的书的本数
from  borrow_Return
where  return_time is null
group by book_No)  x on x.book_No=book.book_No

查询结果如下图:

在这里插入图片描述

问题1:为啥用左外连接?

如果还有书从没被借阅过的话,直接用自然连接会丢失这些元组,从而找不到未被借阅过的书的现存数量,这显然是不合理的.

问题2:isnull()是个啥?为啥要用它?

isnull(a,b)意思是判断字段a是否为空,不为空的话就返回字段a的值,为空的话就返回参数b的值
如图所示:未归还本书可能为空,而一个字段减去空字段也会变成空
在这里插入图片描述
isnull(x.未归还的书的本数,0)意思是就是未归还本数为空时返回数字 0 .然后用quantity减去它
就是现存数量了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值