2012-06-06 2 views
1

퀴즈 그릇 용 MySQL 데이터베이스를 만들고 있습니다. 디자인은 모든 게임 결과를 포함하는 크로스 테이블을 가지고있다, 십자가 테이블 갖는 형태 :MySQL 교차 테이블에서 게임에서 팀이 가장 높은 점수를 얻은 횟수를 계산하는 방법은 무엇입니까?

CREATE TABLE game_results(
    id SMALLINT NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    game_id MEDIUMINT NOT NULL, 
    team_id SMALLINT NOT NULL, 
    score MEDIUMINT); 

내 질문은 하나가 팀이 승리의 수 (즉, 배의 수를 계산 않는 방법입니다 팀은 특정 게임에서 가장 높은 점수를받는 팀입니다.) 테이블 game_results에서 MySQL을 사용합니다.

답변

2
SELECT COUNT(1) AS wins FROM game_results AS gr1 
LEFT JOIN game_results AS gr2 ON gr1.game_id=gr2.game_id AND gr2.team_id != 1234 
WHERE gr1.team_id = 1234 AND gr1.score > gr2.score 
1
SELECT old.team_id, 
     COUNT(old.team_id) AS Wins, 
     old.game_id 
FROM game_results AS old, 
    (SELECT MAX(score) AS score, 
      game_id 
    FROM game_results 
    GROUP BY game_id) AS nt 
WHERE old.score = nt.score 
    AND old.game_id = nt.game_id 
GROUP BY old.team_id 

편집 : 그릴 무시 게임

SELECT old.team_id, 
     COUNT(old.team_id) AS Wins, 
     old.game_id 
FROM game_results AS old, 
    (SELECT MAX(score) AS score, 
      game_id 
    FROM game_results 
    GROUP BY game_id) AS nt 
WHERE old.score = nt.score 
    AND old.game_id = nt.game_id 
    AND old.game_id NOT IN 
    (SELECT DISTINCT a.game_id 
    FROM game_results AS a, 
      game_results AS b 
    WHERE a.game_id = b.game_id 
     AND a.score = b.score 
     AND a.id != b.id) 
GROUP BY old.team_id 
관련 문제