【发布时间】:2013-03-03 00:14:33
【问题描述】:
我正在尝试从 2 个表中选择记录,这些表由 MySQL 中的 unique_id 列连接。
表 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 和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 |
+-------------+--------------+-----------+
输出应该是:
玩家 1 击杀数 = 33 (25 + 8)
玩家 2 击杀数 = 12 (12 + 0)
玩家 3 击杀数 = 14 (9 + 5)
谢谢!
【问题讨论】: