2013-06-27 5 views
0

내 코드에서 제대로 실행되는 쿼리를 발견했지만 where 절이 누락되었습니다.
규칙의 해석이 까다로워지는 버그 또는 특별한 시나리오가 효과가있는 이유는 무엇입니까?이 쿼리가 작동하는 이유는 무엇입니까?

SELECT 
    C.Id 
    , C.Name 
    , C.Qualifying 
    , CI.PlaceG 
    , CI.PlaceN 
    , CI.Hcp 
    , CI.NewHcp 
FROM dbo.Competitions AS C 
INNER JOIN dbo.CompInscription AS CI ON (
    CI.idcomp = C.id 
) 
AND C.archived = 1 
AND CI.idmembre = 11227 
AND CI.placeg IS NOT NULL 
AND CI.placen IS NOT NULL 
AND CI.Status IN (0, 8) 
+0

왜 실행되지 않습니까? AND는 INNER JOIN에 속합니다. 모든 것이 유효합니다. 혼란은 어디에서 오는 것입니까? –

+0

좋아, 나는 ON 절이 발생하는 곳에서 좀 더 읽기 쉬운 코드를 만들기 위해 괄호를 사용하고 있지만 다음 코드가 AND/OR이면 ON 절이 실제로 닫는 괄호로 끝나는 것은 아니다. 당신의 대답에 감사드립니다. – Serge

답변

1

NB가 지적한 것처럼 NB는 WHERE 절 대신 JOIN에 조건이 적용된다는 것을 지적했습니다.

으로 완전하게 유효하지만 아주 많이 볼 수는 없으며 이상하게 보입니다. 첫 번째 AND를 WHERE로 바꾸면 동일한 결과가 나타납니다.

+0

비록 outter 조인이라면 같은 방식으로 작동하지 않습니다. – Serge

+0

당신은 맞을 것입니다. JOIN의 조건문은 일반적으로 OUTER 조인에서 볼 수 있습니다. – Rikalous

관련 문제