2013-04-05 2 views
1

이 오류가 발생하는 다음 문이 있습니다. 분명히 select 문 첫 줄에있는 별칭 "R"은 선언되지 않았지만 명령문의 끝 부분에 있습니다. 누구든지 아이디어가 있습니까?MySQL 저장 프로시 저는 select 문에서 별칭이 정의되지 않았다고 말합니다.

# 1327 - 선언되지 않은 변수 : R

CREATE PROCEDURE `get_series_completion`(IN team1_id INT, IN team2_id INT, IN round_shortname VARCHAR(5)) 
BEGIN 
    DECLARE num_games_total, num_games_played INT; 

    SELECT COUNT(*) INTO num_games_played, R.games_per_series INTO num_games_total 
    FROM (
     SELECT game_id 
     FROM team_games 
     WHERE team_id IN (team1_id, team2_id) 
     GROUP BY game_id 
      HAVING COUNT(*) = 2 
      AND SUM(standing = 0) = 0 
    ) AS S, rounds AS R ON R.round_shortname = round_shortname; 

    SELECT num_games_played/num_games_total; 
END$$ 

답변

1

당신은 전에 절에 모든 열을 선택해야합니다는, 당신의 쿼리가 있어야한다 :

SELECT COUNT(*), R.games_per_series INTO num_games_played, num_games_total 
    FROM (
     SELECT game_id 
     FROM team_games 
     WHERE team_id IN (team1_id, team2_id) 
     GROUP BY game_id 
      HAVING COUNT(*) = 2 
      AND SUM(standing = 0) = 0 
    ) AS S 
    LEFT OUTER JOIN rounds AS R ON R.round_shortname = round_shortname; 

또는

SELECT COUNT(*), R.games_per_series INTO num_games_played, num_games_total 
    FROM (
     SELECT game_id 
     FROM team_games 
     WHERE team_id IN (team1_id, team2_id) 
     GROUP BY game_id 
      HAVING COUNT(*) = 2 
      AND SUM(standing = 0) = 0 
    ) AS S, rounds AS R 
    WHERE R.round_shortname(+) = round_shortname; -- implicit left outer join 
+0

오, 나는 이것을 시도 할 것이다. 나는 "LEFT JOIN"을 ","로 바꿨고 그것을 잊어 버렸습니다. – lwansbrough

+0

게시 한 모든 유사 콘텐츠에 대해 여전히 알 수없는 오류가 발생합니다. – lwansbrough

+0

@iLoch, 업데이트 된 답변 확인 –

관련 문제