Re: [SQL ] 想找出大聯盟會投相同球路的投手 ?

看板Database作者 (flak)時間16年前 (2008/06/14 22:32), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/5 (看更多)
其實正規化是易於編輯(Insert/Update)不利於查詢 反正規化則相反,是利於查詢,不利於編輯 所以反/正規化是虛實相生,正反相剋(我在說啥?) 端看你應用場合而已 用正規化的資料表可以透過子查詢作反正規化的查詢, 不過資料量大的話效率會很慢(子查詢又加Union的關係) Select 伸卡球,滑球,變速球........,Count(*) From (select 投手,Max(伸卡球) as 伸卡球,Max(滑球) as 滑球........ from (select 投手,1 as 伸卡球,0 as 滑球,0 as 變速球... from Table where 球路='伸卡球' union all select 投手,0 as 伸卡球,1 as 滑球,0 as 變速球... from Table where 球路='滑球' union all select 投手,0 as 伸卡球,0 as 滑球,1 as 變速球... from Table where 球路='變速球' .......) group by 投手) ※ 引述《xam (聽說)》之銘言: : ※ 引述《flakchen (flak)》之銘言: : : 改一下欄位比較簡單 : : 投手 伸卡球 滑球 變速球 曲球 : : Wang 1 1 1 1 : : Nilson 1 1 : : Santana 1 1 : : Select 伸卡球,滑球,變速球,曲球,投手 : : order By 伸卡球,滑球,變速球,曲球 : : 就是答案1 : : Select 伸卡球,滑球,變速球,曲球,Count(*) : : Group By 伸卡球,滑球,變速球,曲球 : : 就是答案2 : 原本的 schema 比較接近正規化 : 你這樣反而違反正規化原則吧? : 這樣設計除了對現在這個問題剛好比較好解以外 : 似乎不太有利 : 不過如果如果情況不會變得太複雜,也是一個解法 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.120.12.248
文章代碼(AID): #18KzQN9Q (Database)
討論串 (同標題文章)
文章代碼(AID): #18KzQN9Q (Database)