私は次のデータベーステーブルを持っている:複数のWHEREが存在する複数のCOLUMNSのSUMのMySQL構文を修正しますか?
+----------------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------------+-------------+------+-----+---------+----------------+ | results_id | int(11) | NO | PRI | NULL | auto_increment | | community_id | int(11) | NO | | NULL | | | player1_id | int(11) | NO | | NULL | | | player1_name | varchar(50) | NO | | NULL | | | player1_team | varchar(50) | NO | | NULL | | | player1_goals | int(11) | NO | | NULL | | | player1_result | varchar(3) | NO | | NULL | | | player2_goals | int(11) | NO | | NULL | | | player2_result | varchar(3) | NO | | NULL | | | player2_id | int(11) | NO | | NULL | | | player2_name | varchar(50) | NO | | NULL | | | player2_team | varchar(50) | NO | | NULL | | | player1_pts | int(11) | NO | | NULL | | | player2_pts | int(11) | NO | | NULL | | | date | date | NO | | NULL | | +----------------+-------------+------+-----+---------+----------------+
私はプレイヤーがに対する最も得点を挙げた人を私に教えてくれますMySQLのクエリを実行したいです。
そのプレーヤーは、player1またはplayer2のいずれかになります。
私はそれがあること、このようなものを想像:
select member, goals, count(*) Total
from
(
select player2_name as member, player1_goals as goals
from results
WHERE player1_id = 2
union all
select player1_name as member, player2_goals as goals
from results
WHERE player2_id = 2
) AS T
group by goals
order by Total desc
Limit 1
をこれが結果得られます。
member | goals | Total
Jamie Charles | 2 | 11
Jamie Charles | 0 | 8
Jamie Charles | 3 | 5
Jamie Charles | 1 | 4
Jamie Charles | 5 | 1
をしかし、発生したどのように多くの目標の数の言っているように見えます。正しい結果は(2x11)+(3*5)+(1*4)+(5*1)
このクエリの正しい構文は何ですか?
を必要としない、あなたは '(player2_id = 2の結果からSUM(player2_goals)を選択)+(player1_id = 2の結果からSUM(player1_goals)を選択)'てみましたか? – randominstanceOfLivingThing
ちょうどそれを試して、動作しませんでした – RDowns
あなたは実際にどのようなエラーがありますか? – wmlynarski