您好,登錄后才能下訂單哦!
小編給大家分享一下數據庫中聯合查詢的示例,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
問題最終要求的結果是這樣的
是不是很簡單?
然而,數據庫是這樣式的
忽略續借操作,只關注借書、還書操作。
就是說同一張表,同一本書,既可以存借書,也可以存歸還,而且同一本書還可能借出或者歸還多次。
其他屬性好說,比較麻煩的就是這個歸還時間,同一本書,緊跟著借書操作的還書操作,才是它的歸還時間。
解決方案是這樣的:
把借出操作記為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啦。這樣,其他的子查詢、聯合、分頁都不是問題了。
以上是“數據庫中聯合查詢的示例”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。