다음 데이터 세트를 고려하십시오 ...
DROP TABLE IF EXISTS results;
CREATE TABLE results
(id_competitor INT NOT NULL
,score INT NOT NULL
,id_route INT NOT NULL
,PRIMARY KEY(id_competitor,id_route)
);
INSERT INTO results VALUES
(1,100,2),
(2,100,2),
(3,60,2),
(4 ,60,2),
(1,70,1),
(2,80,1),
(3,70,1),
(4,100,1);
SELECT * FROM results;
+---------------+-------+----------+
| id_competitor | score | id_route |
+---------------+-------+----------+
| 1 | 70 | 1 |
| 1 | 100 | 2 |
| 2 | 80 | 1 |
| 2 | 100 | 2 |
| 3 | 70 | 1 |
| 3 | 60 | 2 |
| 4 | 100 | 1 |
| 4 | 60 | 2 |
+---------------+-------+----------+
id_route = 2에서 가장 높은 점수를 얻으려는 경쟁사를 원합니다. 점수가 매겨진 경우 id_route 1의 결과를 고려해야합니다. 올바른 순서는 2,1,4,3이어야합니다.
중급 솔루션 ...
SELECT *
FROM results x
JOIN results y
ON y.id_competitor = x.id_competitor
AND y.id_route = 1
WHERE x.id_route = 2;
+---------------+-------+----------+---------------+-------+----------+
| id_competitor | score | id_route | id_competitor | score | id_route |
+---------------+-------+----------+---------------+-------+----------+
| 1 | 100 | 2 | 1 | 70 | 1 |
| 2 | 100 | 2 | 2 | 80 | 1 |
| 3 | 60 | 2 | 3 | 70 | 1 |
| 4 | 60 | 2 | 4 | 100 | 1 |
+---------------+-------+----------+---------------+-------+----------+
완벽한 솔루션 ...
SELECT x.id_competitor
, x.score final_score
, y.score semi_final_score
FROM results x
JOIN results y
ON y.id_competitor = x.id_competitor
AND y.id_route = 1
WHERE x.id_route = 2
ORDER
BY final_score DESC
, semi_final_score DESC;
+---------------+-------------+------------------+
| id_competitor | final_score | semi_final_score |
+---------------+-------------+------------------+
| 2 | 100 | 80 |
| 1 | 100 | 70 |
| 4 | 60 | 100 |
| 3 | 60 | 70 |
+---------------+-------------+------------------+
은 "WIN의 옵션 유한 (작은) 번호가없는 한, 50 +, 70, 70 + "범위, 이것은 해결하기가 다소 지루할 것입니다. – Strawberry
마지막으로, '4'는 '3'과 '2'는 '1'과 연결되어 있습니다. 맞습니까? 따라서 경쟁자 '2'는 경쟁자 '1'보다 더 좋은 반 준결승 점수를 얻었 기 때문에 경쟁자 '1'보다 우승합니다. 그리고 같은 논리에 의해 경쟁자 '4'는 그들의 준결승 스코어가 경쟁자 '3'의 그것보다 낫기 때문에 세 번째가된다! 2> 1> 4> 3 – Strawberry
죄송합니다, 당신은 rigth, 나는 실수를 저질 렀습니다. – user2474683