Re: [SQL ] group的應用問題

看板Database (資料庫)作者 (652公車)時間14年前 (2011/11/28 00:05), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《kewang (652公車)》之銘言: : 使用DB:sqlite3 : 想產生的results: : 每本書的第一個借書者,如果沒有借書者就顯示為無 : 大家好,我想產生results的table(黃色),可是我使用這一個SQL script之後,卻發現我 : 的friends.name一直不會出現丁丁丁、甲甲甲,反而是出現乙乙乙、丙丙丙(綠色) : 不知道我是哪個部分的寫法有問題呢? 經過twoseven大大的指導之後,我總算了解要如何產生了,大致如下: (1) 先將loans的book_id用grouping, 並且產生每本書借閱的最早時間 select book_id, min(created_time) as created_time from loans group by book_id ---> 產生l_s (2) 再將loans與l_s做inner join,條件當然是book_id以及created_time要相等, 到此為止,l_a就是我們所產生的最重要table,用來做books及friends的join用 select l.book_id, l.friend_id, l.created_time from loans inner join l_s on l.book_id = l_s.book_id and l.created_time = l_s.created_time ---> 產生l_a (3) 將books left join l_a,然後再將結果做left join friends select b.id, b.title, b.isbn, b.cover, f.id, f.name, l_a.created_time from books b left join l_a on b.id = l_a.book_id left join friends f on f.id = l_a.friend_id; 完整的sql如下: select b.id, b.title, b.isbn, b.cover, f.id, f.name, strftime('%s', l_a.created_time) from books b left join(select l.book_id, l.friend_id, l.created_time from loans l inner join(select book_id, min(created_time) as created_time from loans group by book_id) l_s on l.book_id = l_s.book_id and l.created_time = l_s.created_time) l_a on b.id = l_a.book_id left join friends f on f.id = l_a.friend_id; -- 雜七雜八的kewang部落格 http://kewang.tw -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.134.3.53
文章代碼(AID): #1Eqb_3Qv (Database)
討論串 (同標題文章)
文章代碼(AID): #1Eqb_3Qv (Database)