unique_id
MySQLの列で結合された2つのテーブルからレコードを選択しようとしています。
テーブルprofile
には、プレーヤーごとに1つの一意のエントリが含まれています。
テーブルplayer_current_life
には、プレーヤーごとに多くのエントリが含まれplayer_current_life.is_dead = 1
、場合によっては1つのエントリが含まれますplayer_current_life.is_dead = 0
。
プレイヤーが殺され、新しいキャラクターを作成する前にゲームを離れた場合、プレイヤーにはがありませんplayer_current_life.is_dead = 0
。彼らのすべての記録はになりますplayer_current_life.is_dead = 1
。
私がしたい:
profile.total_player_kills + player_current_life.player_kills
どこplayer_current_life.is_dead = '0'
しかし
player_current_life.is_dead = 0
ループ内のそのユーザーに存在しない場合は、プルするだけprofile.total_player_kills
です。
これにより、テーブル内のすべてのプレイヤーがループし、過去のライフからの合計キル数(profile.total_player_kills)が表示されますが、死んでいないキャラクター(player_current_life.is_dead = 0)がある場合は、現在のライフキル数もプルします。
私がこれまでに持っているものは、彼らがゲームで生きているキャラクターを持っている場合にのみ機能します。
SELECT sum(profile.total_player_kills + player_current_life.player_kills) AS All_Player_Kills, profile.name AS Player_Name
FROM
profile
LEFT OUTER JOIN player_current_life
ON profile.unique_id = player_current_life.unique_id AND player_current_life.is_dead = '0'
WHERE
profile.total_play_time + player_current_life.play_time >= 10
GROUP BY
profile.name
つまり、まだ生きているキャラクターがいる場合は、profile
ANDから合計キルをプルし、生きていない場合は、からキルをプルするだけです。player_current_life
profile
これは、私が達成しようとしていることをよりよく説明するために作成した視覚的な表です。
profile (only increases when the player dies)
+-------------+-----------+--------------+
| Player_Name | unique_id | player_kills |
+-------------+-----------+--------------+
| Player1 | 12345 | 25 |
+-------------+-----------+--------------+
| Player2 | 67890 + 12 |
+-------------+-----------+--------------+
| Player3 | 54321 + 9 |
+-------------+-----------+--------------+
player_current_life (contains kill count not sent to "profile" where is_dead = 0)
+-------------+--------------+-----------+
| unique_id | player_kills | is_dead |
+-------------+--------------+-----------+
| 12345 | 8 | 0 |
+-------------+--------------+-----------+
| 12345 | 15 | 1 |
+-------------+--------------+-----------+
| 12345 | 10 | 1 |
+-------------+--------------+-----------+
| 67890 + 7 | 1 |
+-------------+--------------+-----------+
| 67890 + 5 | 1 |
+-------------+--------------+-----------+
| 54321 + 2 | 1 |
+-------------+--------------+-----------+
| 54321 + 7 | 1 |
+-------------+--------------+-----------+
| 54321 + 5 | 0 |
+-------------+--------------+-----------+
出力は次のようになります。
Player1キル=33(25 + 8)
Player2キル=12(12 + 0)
Player3キル=14(9 + 5)
ありがとう!