0
我想我已經超越了我的SQL知識規範化了我的數據庫。 :) 這是我從斯諾克聯賽網絡應用程序中掙扎的一個查詢。它會計算整個賽季所有球隊的高分數統計數據。在這個例子中團隊ID 3.規範化MySQL以外的知識?
select max(break_score) maxBreak,avg(break_score) avgBreak, count(break_score) breaks from breaks join matches on match_id=break_match where break_player in ( select distinct player_id from players join team_members on player=player_id and team=3) and (match_hometeam=3 or match_awayteam=3)
表:
- 比賽:
match_id int(11) auto_increment match_hometeam int(11) match_awayteam int(11) match_date date match_void tinyint(4) match_status tinyint(4) match_homescore tinyint(4) match_awayscore tinyint(4) match_league int(11)
- 遊:
break_id int(11) auto_increment break_match int(11) foreign key to match_id break_player int(11) break_score tinyint(4) break_clearance tinyint(4) break_year int(11)
- team_members:多對多的表格。
team int(11) foreign key to teams table player int(11) foreign key to players table year int(11) the year that the player played for the team
上面的查詢工作幾乎從一個問題旨在開。如果一名球員爲不止一支球隊效力,那麼他爲所有球隊提供的休息時間將包含在這些數據中。
如果Breaks表中有一個額外的字段'break_team',查詢就會很平常。所以我的問題有兩方面,任何人都可以協助正確的查詢,或者我應該減少標準化來幫助這些統計數據?什麼時候去標準化?
外貌就像你修復它一樣。您的查詢在最後一列收集345,這是所有單獨季節總數的總和。我的查詢返回347,來自不同賽季和球隊的幾次休息。非常感謝。 – PaulBM 2009-08-22 17:50:57
沒問題,很高興它爲你解決......如果你發現任何未來的小故障回覆,我會檢查回來。 – 2009-08-22 19:13:53