所以這裏有一點關於系統的背景知識。用戶的戰鬥和勝利者是贏得最多輪次的人。我需要幫助可能加入三張桌子。我有表user
之一,它存儲用戶信息。表match
存儲匹配信息。表rounds
其中每場比賽存儲每場比賽的勝者,所以如果一場比賽有5場比賽,那麼表rounds
將有五場比賽並記錄每場比賽的勝者。需要複雜查詢的指導
下面是一些示例數據: 表user
: (userid
是主鍵)
userid username
-----------------
1 Kevin
2 Sam
3 Steve
4 Matt
表match
: (id
是主鍵challenger
和challenged
均爲外鍵user.userid
。)
id challenger challenged rounds
-----------------------------------
1 2 3 3
2 1 2 1
3 2 3 3
4 2 4 1
表rounds
: (所有字段都是主鍵。 id
是外鍵match.id
和winner
是外鍵user.userid
)
id round winner
------------------
1 1 2
1 2 2
1 3 3
2 1 1
3 1 2
3 2 3
3 3 2
4 1 4
我試圖建立一個查詢,將輸出下面的結果:
winner won loser won
------------------------
Sam 2 Steve 1
Kevin 1 Sam 0
Sam 2 Steve 1
Matt 1 Sam 0
上述結果顯示贏家每場比賽的失敗者。 won
字段顯示分別獲勝者和失敗者獲勝的比賽數。
有誰知道我可以如何建立上述查詢?
而且,這裏重要的是,我認爲,如果他們配合會發生什麼?或者我們可以假設總會有奇數輪次? – Compeek 2011-12-28 07:58:26
是的,總是有一個奇數 – user962449 2011-12-28 08:13:27
我認爲你應該考慮在他們發生時確定勝利並將結果存儲在每場比賽的排中。因此,添加另一個字段以匹配被叫方贏家,並在匹配結束後儘快填入用戶的ID。與通過巨大的查詢來計算勝利相比,您可以節省大量開銷,就像在每次您需要結果時看到的一些答案中一樣。另外,這種方式更簡單。如果這對您的項目是可行的,我覺得這是一個更好的方法。 – Compeek 2011-12-28 16:32:47