だから私はSQLが得意ではありません.私は複雑なMySQLクエリを持っています.私が理解していない部分は、UNIONの上の部分的なクエリから得られるすべての結果が8倍になるということです.どのようにこれは可能ですか?なぜ彼らは8倍になっているのですか?どうすればそれを止めることができますか? これと非常によく似た他のクエリもいくつかありますが、それらはすべて同じ問題を抱えています。なぜこれが起こっているのかについてのアイデアは大歓迎です。ありがとうございました!
SELECT best_thrown
FROM(
SELECT CASE WHEN rageup_echelon.party_id IS NULL THEN 0 ELSE SUM(CASE WHEN rageup_echelon.echelon_vote = 1 THEN 5 ELSE 0 END) - SUM(CASE WHEN rageup_echelon.echelon_vote = 0 THEN 3 ELSE 0 END) END AS best_thrown
FROM rageup_parties LEFT JOIN rageup_echelon ON rageup_parties.party_id = rageup_echelon.party_id
LEFT JOIN rageup_team_hosts ON rageup_parties.party_team_id = rageup_team_hosts.team_id
WHERE rageup_team_hosts.team_id = 1 || rageup_team_hosts.team_id = 2 || rageup_team_hosts.team_id = 3
AND rageup_parties.party_status = 'approved'
AND rageup_parties.party_invites = 'public'
AND rageup_team_hosts.user_id = 1
GROUP BY rageup_parties.party_id
UNION
SELECT CASE WHEN rageup_echelon.party_id IS NULL THEN 0 ELSE SUM(CASE WHEN rageup_echelon.echelon_vote = 1 THEN 5 ELSE 0 END) - SUM(CASE WHEN rageup_echelon.echelon_vote = 0 THEN 3 ELSE 0 END) END AS best_thrown
FROM rageup_parties LEFT JOIN rageup_echelon
ON rageup_parties.party_id = rageup_echelon.party_id
WHERE rageup_parties.party_host_id = 1
AND rageup_parties.party_status = 'approved'
AND rageup_parties.party_invites = 'public'
AND rageup_parties.party_team_id = 'user'
GROUP BY rageup_parties.party_id
ORDER BY best_thrown DESC
LIMIT 1
) AS T