나는 SQL Server 2008을 실행하고 난 다음 SQL 쿼리를 실행하기 위해 노력하고있어 장소 :SQL 서버 : LEFT OUTER 조인 여러으로 쿼리 및 조건은
쿼리 1 : 이미 알고
SELECT *
FROM tableA
LEFT OUTER JOIN tableB AS tabX ON tabX.some_id = tableA.some_id
LEFT OUTER JOIN tableB AS tabY ON tabY.some_id = tableA.some_id
WHERE tabX.some_attribute = 'X'
AND tabY.some_attribute = 'Y'
을 WHERE
진술 후 그 조건은 LEFT OUTER JOIN
을 엉망으로 만들고 일반적으로 클래식 INNER JOIN
처럼 행동하게 만듭니다.
SELECT *
FROM tableA
LEFT OUTER JOIN tableB AS tabX ON tabX.some_id = tableA.some_id AND tabX.some_attribute = 'X'
LEFT OUTER JOIN tableB AS tabY ON tabY.some_id = tableA.some_id AND tabY.some_attribute = 'Y'
기본적으로 내가 ON
문 내 WHERE
조건을 포함해야한다 : 2
검색어 : 무엇 SQL Server의 경우는 2005 년
내가이 작업을 수행 할 수 있습니다를 해결하려면, 흥미없는 것입니다 쿼리가 의도 한대로 실행됩니다.
내 첫 번째 질문은입니다. SQL Server는 두 가지 쿼리를 같은 방식으로 해석하지 않습니다 (예전 SQL Server 버전 또는 Oracle DBServer처럼)?
첫 번째 쿼리의 조건 (WHERE
문 이후)이 ("주요 결과"를 의미하는) 주요 논리적 인 레퍼토리에 어떻게 영향을 미치는지에 대해 혼란스러워서 묻습니다. 특히 두 조건 모두 별칭 tabX 및 tabY를 참조하므로
두 번째 질문은 어떻게 든이 동작을 변경할 수 있습니까? (예를 들어, 서버 구성에서?)
안부,
표트르
그 점을 지적 해 주셔서 감사합니다. 그 경우 (ANSI NULLS)인지 확인해 보겠습니다. 분명히하기 위해서 : 나는이 논리를 훼손하지 않는다. 나는 이것을 이해하고 싶다. 그리고 ANSI NULLS가 MSSQL 2005에 영향을 미칠 수 있다고 말했듯이 - 오라클 서버는 무엇보다 그것도 시도해 보았습니다. – PiWo
"외부 조인 된 테이블의 열에있는 표현식이 다르고 ON 절 외부에서 의미가 없습니다."정확히 내가 무엇을했는지. 고마워, 내 문제 쿼리가 방금 해결되었습니다. – Dragick