0

MySQL で table_1 と table_2 を結合し、どちらのユーザーが最も多くの賞金を獲得しているかを比較する必要があります。次に、勝ったユーザー ID で table_2.winner を更新します。

表1

city   user   winnings
1       a        99
1       b        0
1       c        50
1       d        2

表 2

city   user_1     user_2    winner 
1        a           b         a
1        c           d         50

ただし、これまでにテーブルに参加する方法を理解するのに苦労しています

SELECT table_1.winnings AS win_a, table_1.winnings AS win_b

FROM table_1, table_2

WHERE table_2.user_1 = table_1.user
  AND table_2.user_2 = table_1.user

http://sqlfiddle.com/#!2/c855b/1

4

2 に答える 2

1

次のように、テーブルに対して複数回参加できます。

SELECT IF(user1.winnings > user2.winnings, "user1", "user2")
FROM table_2 games
JOIN table_1 user1 ON games.user_1 = user1.user
JOIN table_1 user2 ON games.user_2 = user2.user

http://sqlfiddle.com/#!2/c855b/16

于 2013-08-11T22:27:06.907 に答える
0

ドローで壊れているため、@skishoreのクエリを少し修正しました。検討中のドローを取るものは

SELECT 
    case when user1.winnings > user2.winnings then user1.user
    when user2.winnings > user1.winnings then user2.user
    else null
end
FROM table_2 games
JOIN table_1 user1 ON games.user_1 = user1.user
JOIN table_1 user2 ON games.user_2 = user2.user

しかし、これとは別に、私はまだ目的を理解していません。@skishore の回答へのコメントにこれを書きましたが、ここにも貼り付けます。ケースを考えてみましょう:

ユーザー c はユーザー b との対戦で 99 試合に勝利し、ユーザー d はユーザー c との対戦で 2 試合に勝利しました。しかし、c と d の間の勝者は誰でしょうか? C

2 番目の質問は、なぜこれを別のテーブルに格納する必要があるのか​​ということです。賞金の数は動的に変化するため、table2 の勝者の列を最新の状態に保つためにトリガーを作成する必要があります。このクエリを使用して勝者を取得することはできませんか?

于 2013-08-11T22:47:13.533 に答える