2010-10-25 117 views
0

我有一個擁有2000個遊戲的數據庫。每場比賽由1-90個15個數字組成。有效的mysql查詢多個表格

每次我在數據庫中提交一個數字,我都希望我的結果更新,所以我總是看到最接近完成的遊戲。 (一次只能觀看50場比賽)。

我的數據庫結構如下:

表:遊戲

  • ID

表:game_numbers

  • game_id

表:numbers_played

實施例: 表遊戲包含遊戲。每個遊戲的15個數字(1-90)存儲在* game_numbers *中,其中* game_id *標識遊戲。 Table * numbers_played *包含已播放的1-90的隨機數。

我該如何拉動玩過的數字最多的50個遊戲(意味着存在於game_numbers和numbers_played中的結果),記住效率和簡單性?

在此先感謝!

問候

回答

1

未經測試...

SELECT game_id, COUNT(*) 
    FROM game_numbers 
    WHERE number IN (SELECT number FROM numbers_played) 
GROUP BY game_id 
ORDER BY COUNT(*) DESC 
    LIMIT 50; 
+0

謝謝你的回覆!你能告訴我如何關閉查詢嗎?說我想要id,從桌面遊戲的名稱 - 並沒有從其他的(排序以外) - 問候 – Kristian 2010-10-25 17:40:27

+0

選擇ID,名稱從遊戲加入game_numbers在game.id = game_numbers.game_id在哪裏game_numbers.number ...等等上。 – 2010-10-25 17:59:10

0

創建一個列這是「數字打」(即一的可能來自「numbers_played收集的信息非歸場,即重複「表。

然後創建該列的索引,然後,如果你‘排序依據’中,MySQL可以使用索引,以避免需要進行排序。

然而,檢查看看你是否首先遇到性能問題。如果你不這樣做,那麼你可以節省自己的工作量,如果你保持原樣,系統將會更加標準化,並且可以查詢多個表格並按聚合順序排序。

+0

有趣的是,簡單永遠是最後一件事。如果我沒有理清我的查詢,我可能會這樣做!謝謝 – Kristian 2010-10-25 17:43:49