2017-10-10 7 views
-4

국가에서 획득 한 메달 수를보고 싶습니다. 그래서 저는 테이블 www_result와 www_country를 결합하기로 결정했습니다. country_id 속성은 공통적으로 사용됩니다. 이것은 지금까지의 코드입니다. 그러나 구문 오류가 발생합니다. 이유를 찾을 수없는 것 같습니다. Natural join mysql 5.6

SELECT * FROM www_results WHERE position = 1 OR position = 2 OR position = 3 
NATURAL JOIN 
www_countries; 

가 사전에 감사

+0

무엇이 오류입니까? 그 (것)들을 게시하십시오 –

+0

아마 논쟁의 순서는 틀리다. 자연 조인을 사용한 적이 없는데, SELECT * FROM www_results를 시도해 볼 것을 제안 할 것입니다. NATURAL JOIN www_countries WHERE position <= 3;' –

답변

1

당신은 단지 잘못된 순서로 일이의는 당신이 때 참조하는 테이블 또한 지정해야 WHERE 절 ...

을 적용 조인 않는다 필드 이름을 참조합니다. 항상 필요한 것은 아니지만 읽기 쉽고 버그가 적습니다.

SELECT 
    * 
FROM 
    www_results 
NATURAL JOIN 
    www_countries 
WHERE 
    www_results.position IN (1, 2, 3) 
; 

나는 실제로 어떤 식 으로든 NATURAL JOIN을 권장합니다. 부주의로 동일한 이름의 필드가있는 경우 원하지 않는 동작이 발생합니다. 명시 적으로 INNER JOIN을 사용합니다.

SELECT 
    * 
FROM 
    www_results 
INNER JOIN 
    www_countries 
     ON www_results.country_id = www_countries.country_id 
     -- Replace the "country_id" with whatever field you want to join on 
WHERE 
    www_results.position IN (1, 2, 3) 
;