システムの背景を少し説明します。ユーザーの戦いと勝者は最も多くのラウンドを勝ち取った人です。私はおそらく3つのテーブルに参加して助けが必要です。私はユーザ情報を格納するテーブルuser
を持っています。一致情報を格納するテーブルmatch
。テーブルrounds
には1試合ごとの勝者が格納されています。したがって、試合のラウンドが5ラウンドの場合、テーブルrounds
はその試合に5つの行を持ち、各ラウンドの勝者を記録します。複雑なクエリのガイダンスが必要
ここではいくつかのサンプルデータがあります: 表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
: (すべてのフィールドが主キーです。
winner won loser won
------------------------
Sam 2 Steve 1
Kevin 1 Sam 0
Sam 2 Steve 1
Matt 1 Sam 0
上記の結果は、勝者を示し、: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
Iの出力は以下となり、次の結果がクエリを構築しようとしているです各試合の敗者。 won
フィールドには、勝者と敗者それぞれの試合で獲得したラウンド数が表示されます。
私は上記のクエリをどのように構築できるか知っていますか?
ここで重要なのは、私が思うに、彼らはネクタイとどうなるかですか?あるいは、常に奇数のラウンドがあると仮定することができますか? – Compeek
はい、いつも奇数があります – user962449
私は勝ちを決めることを検討し、各試合の行に結果を格納することを検討するべきだと思います。だから、勝者と呼ばれる別のフィールドを追加し、マッチが終わるとすぐにユーザーのIDでそれを記入してください。あなたは結果が必要なたびに私が見ている回答のいくつかのような巨大なクエリで勝利を計算するのと比較して、オーバーヘッドを大幅に節約できます。さらに、それはずっと簡単です。それがあなたのプロジェクトにとって実現可能なら、私はそれがもっと良い方法だと思っています。 – Compeek