我有一個名爲TournamentXPlayer的mySQL撲克數據庫,其中包含一個名爲TournamentXPlayerID和TournamentID,PlayerID,Finish和Payout的主索引。 我一直在尋找方法來計算每個球員最長的整理與現金獎的連勝。後來我想包括其他的東西,如球員個人連勝(並非所有的球員每場比賽都打,但有些打得很好),最長的連勝,甚至沒有獲獎的最長連勝。然而目前我無法弄清楚如何最好地數連勝。 可以這樣做嗎?如何計算每個玩家的最長連勝數
感謝 特里
我有一個名爲TournamentXPlayer的mySQL撲克數據庫,其中包含一個名爲TournamentXPlayerID和TournamentID,PlayerID,Finish和Payout的主索引。 我一直在尋找方法來計算每個球員最長的整理與現金獎的連勝。後來我想包括其他的東西,如球員個人連勝(並非所有的球員每場比賽都打,但有些打得很好),最長的連勝,甚至沒有獲獎的最長連勝。然而目前我無法弄清楚如何最好地數連勝。 可以這樣做嗎?如何計算每個玩家的最長連勝數
感謝 特里
當你要計算的條紋,你需要知道的時候,當玩家完成了比賽。否則,如果一名球員是多功能球員,你將會得到錯誤的結果,因爲他可能在一場超級聯賽錦標賽中打了15個小時,並完成了資金並同時註冊並退出了多個超級巡迴賽。您可以通過ID-s(相對於開始時間)對錦標賽進行排序,但如果您沒有時間,玩家結束時,您將永遠得不到正確的結果。
如果我們假設,玩家不要多表的話,那麼請使用以下的算法:
發表評論,如果你有問題,我會編輯/完成我的答案
我假設該錦標賽ID會自動遞增,以便提供數據的年表。
這是組內訂單的經典問題。爲了這個目的,你需要考慮的變量,如:
mysql> set @p_id:=-1; set @streak:=0;
mysql> select playerID,max(streak) from (select playerID,@streak:=if(Payout=0,0,if(@p_id=playerID,@streak+1,1)) streak, @p_id:=playerID from (select playerID,TournamentID,Payout from table order by 1,2) a) a group by 1;
在這個例子中,ETAPS是:
謝謝。我將在稍後再介紹一下。我會讓你知道我如何繼續。 –
這是很好的,並作爲一個獨立的查詢運行時的工作。我的問題是,由於嵌入式查詢,mySQL不會讓我將它保存爲視圖,而且由於用戶定義的變量,我似乎無法分離嵌入式查詢。我試過把它轉換爲PHP並在網頁上運行它,但它顯示最大(條紋)爲1.我相信這是因爲我沒有首先定義變量。你是否知道A.如何將其重新編寫爲可以保存爲視圖的單獨查詢。或者B.如何將其整體轉換爲PHP代碼? –
我想這可以工作,如果你爲每個子查詢創建一個視圖。 –
感謝您的支持。幸運的是它是一個現場錦標賽數據庫,因此無法實現多線程功能,並且球員按照他們的出場順序完成比賽。 –