数据库中联合查询的示例-创新互联
小编给大家分享一下数据库中联合查询的示例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
创新互联是一家集网站建设,向阳企业网站建设,向阳品牌网站建设,网站定制,向阳网站建设报价,网络营销,网络优化,向阳网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。问题最终要求的结果是这样的
是不是很简单?
然而,数据库是这样式的
忽略续借操作,只关注借书、还书操作。
就是说同一张表,同一本书,既可以存借书,也可以存归还,而且同一本书还可能借出或者归还多次。
其他属性好说,比较麻烦的就是这个归还时间,同一本书,紧跟着借书操作的还书操作,才是它的归还时间。
解决方案是这样的:
把借出操作记为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.操作时间用的是左外连接,未归还的还书时间当然就是NULL啦。这样,其他的子查询、联合、分页都不是问题了。
以上是“数据库中联合查询的示例”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
当前文章:数据库中联合查询的示例-创新互联
文章分享:http://azwzsj.com/article/dcpdhj.html