共計 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 問一下細節