加入收藏 | 设为首页 | 会员中心 | 我要投稿 南京站长网 (https://www.025zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

数据库中联合查询的示范

发布时间:2022-02-17 14:09:31 所属栏目:MySql教程 来源:互联网
导读:小编给大家分享一下数据库中联合查询的示例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! 问题最终要求的结果是这样的 是不是很简单? 然而,数据库是这样式的 忽略续
        小编给大家分享一下数据库中联合查询的示例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
 
        问题最终要求的结果是这样的
  
       是不是很简单?
 
       然而,数据库是这样式的
 
       忽略续借操作,只关注借书、还书操作。
  
就是说同一张表,同一本书,既可以存借书,也可以存归还,而且同一本书还可能借出或者归还多次。
 
其他属性好说,比较麻烦的就是这个归还时间,同一本书,紧跟着借书操作的还书操作,才是它的归还时间。
 
解决方案是这样的:
 
把借出操作记为A表,归还操作记为B表:其中A表22行,B表19行
 
连接条件应当为藏书的编号和读者的id ,连接的结果为58行。由于数据中,同一本书名有好几个编号,我把书名给去掉了,连接的结果是这样的
  
可以看出如果上的记录框图框出来的就是问题的所在!框图框出来的都是同一条借书记录,它跟每一条的还书记录连接。从记录里可以看出,我让这个人借了六次同一本书,做了六次的连接!
 
以下规则可以帮助我们查询出正确的结果
 
1)同一组借还操作,借操作一定在还操作之前
 
2)排除掉借操作时间>还操作的时间的记录之后,最早的还书时间,就是这个人,这本书的还书时间
  
最终SQL代码是这样的
 
select A.*,min(B.操作时间) 还书时间 from aleft join
 bon a.书籍的典藏编号 = b.书籍的典藏编号 and a.读者id = b.读者id
and a.操作时间<b.操作时间group by a.书籍的典藏编号,a.操作名称,a.操作时间,a.读者id
 
用的是左外连接,未归还的还书时间当然就是NULL啦。这样,其他的子查询、联合、分页都不是问题了。
 
以上是“数据库中联合查询的示例”这篇文章的所有内容,感谢各位的阅读!

(编辑:南京站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读