其實以前一直無法理解left/right join的存在理由
以資料準確性和資源利用率來說,inner join或者說 select * from table where id=‘id’比起left好多了
不過這幾天經過學長的開導,發現了left join之類的存在理由
簡單來說,資料完整性
如果我們有一個訂單table_order,裡面有連結到客戶資料表table_cus的id_cust
使用inner join時,當id_cust在table_cust中不存在時,該資料就無法被選擇到
如 select a.order, b.name_cust from table order a , table_cust b where a.id_cust=b.id_cust where a.date between ‘2010/1/1’ and ‘2010/2/1’
這會造成資料的缺失,
簡單來說就是本來有100筆資料
但是其中10筆的id_cust在table_cust中不存在時
select結果就只有90筆
這種結果的問題非常大
如果放在別的情境中,當客戶發現這些資料不全時就會質問開發者
開發者需要從頭追蹤才能取得完整資訊
學長的說法是與其這樣,不如使用left join取得全部資料
之後再來處理對應的資料缺失問題
例如顯示客戶資料不存在並提示新增客戶資料之類
這個理由非常的能夠說服人
難怪有人說剛從學校畢業都用inner join
不過業界兩三年後就都用left join了 XD
沒有留言:
張貼留言