sql 的 borrows 表和 readers 的借书 与还书问题,大家来帮帮我!

ypchengmsdn 2009-03-14 12:15:55

--2.读者的类型rtype .0--普通会员 ,1--高级会员 ,2--VIP会员、 备注--rtype 在readers 表中。
--0-可借20天,1-可借30天,2-可借50天
--borrows表中,求出每个读者借书 应该到期还书时间!---根据会员类型计算还书时间
--borrows表中,求出每个读者还书是否过期,过期多少天!
以下是两个表:

select * from borrows
---------------------------------------------------------------
rno bno bout bin bcout
----------------------------------------------------------------
101 1002 2006-12-10 00:00:00.000 2007-01-10 00:00:00.000 1
102 1002 2006-12-10 00:00:00.000 2007-01-10 00:00:00.000 1
101 1004 2006-12-10 00:00:00.000 2007-01-10 00:00:00.000 1
103 1004 2006-10-10 00:00:00.000 2006-11-10 00:00:00.000 1
103 1005 2006-10-10 00:00:00.000 2006-11-10 00:00:00.000 1
104 1001 2006-10-10 00:00:00.000 2006-11-10 00:00:00.000 2
103 1003 2005-05-05 00:00:00.000 2005-06-05 00:00:00.000 1




select * from readers
rno rname rsex rage radd rtype
101 zhangsan 男 20 合肥一中 0
102 zhangsan2 男 20 合肥2 中 1
103 zhangsan3 男 30 合肥4中 2
104 zhangsan4 女 30 合肥4中 1
105 zhangsan5 女 17 合肥7中 0
...全文
137 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ypchengmsdn 2009-03-16
  • 打赏
  • 举报
回复
dawugui 很强,受益非浅!!
ypchengmsdn 2009-03-15
  • 打赏
  • 举报
回复
他说多次为t 指定了bin列,我该怎么修改啊:

bin 是应该到期还书时间


select * ,
overdue = datediff(day ,bin, getdate())
from
(
select m.* ,
bin = dateadd(day , (case n.rtype when 0 then 20 when 1 then 30 when 2 then 50 end),m.bout)
from borrows m , readers n
where m.rno = n.rno
) t
where bin < getdate()
ypchengmsdn 2009-03-15
  • 打赏
  • 举报
回复
大哥,第一题是对了,第二题说 多次为t 返回bin 列,请解释:
dawugui 2009-03-14
  • 打赏
  • 举报
回复
--1.求出每个读者借书 应该到期还书时间!---根据会员类型计算还书时间
select m.* ,
应该到期还书时间 = dateadd(day , (case n.rtype when 0 then 20 when 1 then 30 when 2 then 50 end),m.bout)
from borrows m , readers n
where m.rno = n.rno

--2.求出每个读者还书是否过期,过期多少天!
select * ,
[过期多少天] = datediff(day , 应该到期还书时间 , getdate())
from
(
select m.* ,
应该到期还书时间 = dateadd(day , (case n.rtype when 0 then 20 when 1 then 30 when 2 then 50 end),m.bout)
from borrows m , readers n
where m.rno = n.rno
) t
where 应该到期还书时间 < getdate()
htl258_Tony 2009-03-14
  • 打赏
  • 举报
回复
是否过期要根据什么来计算?
ypchengmsdn 2009-03-14
  • 打赏
  • 举报
回复
borrows 表的字段含义:
rno --学号
bno --书名号
bout -- 借出时间
bin --应当归还时间
bcout --借书的数量
能最好用T-SQL语句编写!谢谢
htl258_Tony 2009-03-14
  • 打赏
  • 举报
回复
--borrows表中,求出每个读者借书 应该到期还书时间!---根据会员类型计算还书时间 
--假设bcout 为借书日期
select a.*,还书日期=dateadd(day,case b.rtype when 0 then 20 when 1 then 30 when 2 then 50 end,b.bcount)
from readers a
join borrows b on a.rno=b.rno

--borrows表中,求出每个读者还书是否过期,过期多少天!(请先把字段意思说明一下)

22,181

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧