数据库中联合查询的示例

47次阅读
没有评论

共计 824 个字符,预计需要花费 3 分钟才能阅读完成。

自动写代码机器人,免费开通

丸趣 TV 小编给大家分享一下数据库中联合查询的示例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

  问题最终要求的结果是这样的

数据库中联合查询的示例

是不是很简单?

然而,数据库是这样式的

数据库中联合查询的示例

忽略续借操作,只关注借书、还书操作。

数据库中联合查询的示例

就是说同一张表,同一本书,既可以存借书,也可以存归还,而且同一本书还可能借出或者归还多次。

其他属性好说,比较麻烦的就是这个归还时间,同一本书,紧跟着借书操作的还书操作,才是它的归还时间。

解决方案是这样的:

把借出操作记为 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 啦。这样,其他的子查询、联合、分页都不是问题了。

以上是“数据库中联合查询的示例”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注丸趣 TV 行业资讯频道!

向 AI 问一下细节

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-04发表,共计824字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)