提交 a388755b 编写于 作者: Q qq_36105691

fix

上级 d9851cc8
......@@ -64,7 +64,7 @@ namespace Mika {
} else if (input.substr(0, 7) == "result ") {
command.setCommand("result");
if (input.substr(input.size() - 7, 7) == " detail") {
command.setArg(input.substr(7, input.size() - 15));
command.setArg(input.substr(7, input.size() - 14));
command.setSuffix("detail");
} else {
command.setArg(input.substr(7, input.size() - 7));
......@@ -72,7 +72,6 @@ namespace Mika {
} else {
command.setCommand("error");
}
return command;
}
} // Mika
\ No newline at end of file
......@@ -29,37 +29,44 @@ namespace Mika {
std::vector<MatchResultDetail> MatchDAO::getMatchResultsDetail(const std::string &matchName) {
auto db = DatabaseManager::getInstance();
const auto query = R"(
WITH Preliminary AS (SELECT player_name,
RANK() OVER (ORDER BY total_score DESC) AS rank,
score_text as Preliminary_Score
FROM Match
LEFT JOIN Score ON Match.match_id = Score.match_id
WHERE lower(match_name) = lower(')" + matchName + R"(')
AND match_type = 'Preliminary'),
SemiFinal AS (SELECT player_name,
RANK() OVER (ORDER BY total_score DESC) AS rank,
score_text as SemiFinal_Score
FROM Match
LEFT JOIN Score ON Match.match_id = Score.match_id
WHERE lower(match_name) = lower(')" + matchName + R"(')
AND match_type = 'Semifinal'),
Final AS (SELECT player_name,
RANK() OVER (ORDER BY total_score DESC) AS rank,
score_text as Final_Score
WITH Final AS (SELECT player_name, RANK() OVER (ORDER BY total_score DESC) AS final_rank, score_text as Final_Score
FROM Match
LEFT JOIN Score ON Match.match_id = Score.match_id
WHERE lower(match_name) = lower(')" + matchName + R"(')
AND match_type = 'Final'),
Preliminary AS (SELECT player_name,
RANK() OVER (ORDER BY total_score DESC) AS preliminary_rank,
score_text as Preliminary_Score
FROM Match
LEFT JOIN Score ON Match.match_id = Score.match_id
WHERE lower(match_name) = lower(')" + matchName + R"(')
AND match_type = 'Preliminary'),
SemiFinal AS (SELECT player_name,
RANK() OVER (ORDER BY total_score DESC) AS semifinal_rank,
score_text as SemiFinal_Score
FROM Match
LEFT JOIN Score ON Match.match_id = Score.match_id
WHERE lower(match_name) = lower(')" + matchName + R"(')
AND match_type = 'Final')
SELECT Final.player_name,
COALESCE(Preliminary.rank, '*') || ' | ' || COALESCE(SemiFinal.rank, '*') || ' | ' ||
COALESCE(Final.rank, '*') AS Rank,
COALESCE(Preliminary_Score, '*') AS Preliminary_Score,
COALESCE(SemiFinal_Score, '*') AS SemiFinal_Score,
COALESCE(Final_Score, '*') AS Final_Score
FROM Final
LEFT JOIN SemiFinal ON Final.player_name = SemiFinal.player_name
LEFT JOIN Preliminary ON Final.player_name = Preliminary.player_name
ORDER BY Preliminary.rank;
AND match_type = 'Semifinal')
SELECT COALESCE(F.player_name, P.player_name, S.player_name) as player_name,
COALESCE(P.preliminary_rank, '*') || ' | ' || COALESCE(S.semifinal_rank, '*') || ' | ' ||
COALESCE(F.final_rank, '*') AS Rank,
COALESCE(P.Preliminary_Score, '*') AS Preliminary_Score,
COALESCE(S.SemiFinal_Score, '*') AS SemiFinal_Score,
COALESCE(F.Final_Score, '*') AS Final_Score
FROM (SELECT DISTINCT player_name
FROM Final
UNION
SELECT DISTINCT player_name
FROM Preliminary
UNION
SELECT DISTINCT player_name
FROM SemiFinal) AS AllPlayers
LEFT JOIN Final F ON AllPlayers.player_name = F.player_name
LEFT JOIN Preliminary P ON AllPlayers.player_name = P.player_name
LEFT JOIN SemiFinal S ON AllPlayers.player_name = S.player_name
ORDER BY COALESCE(P.preliminary_rank, S.semifinal_rank, F.final_rank)
)";
try {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册