2014-12-17 4 views
-1

SQL Server 데이터베이스의 두 테이블에서 일부 열을 선택해야합니다. 다음과 같은 것을 사용해야합니다 :SQL Server : 여러 where 절이있는 내부 조인에서 선택

SELECT 
    c.itmtxt, a.attr1val, a.attr2val, a.attr3val 
FROM 
    code c 
JOIN 
    codeattribute a ON c.itmcd = a.itmcd 
WHERE 
    c.catcd = 1 
    AND c.itmtxt = 2 
    AND a.attr1val = 'A' 

그러나 어디 마지막 AND 문을 추가하면 쿼리가 작동하지 않습니다. 단일 WHERE 절로 끝나면 코드는 예상대로 작동합니다.

누구나 잘못된 것을 볼 수 있습니까?

감사합니다.

+2

데이터 샘플을 게시 할 수 있습니까? 염두에 두어야 할 첫 번째 사항은 WHERE 기준이 기존 데이터와 일치하지 않는다는 것입니다. 또는 c.itmtxt는 정수 데이터 유형이 아닐 수도 있습니다. – rwking

+0

또는 "AND"대신에 "OR"를 원할 수도 있습니다 ... – cha

+0

당신이 얻으 려하지 않은 것은 무엇입니까? – ThomasMcLeod

답변

0

AND a.attr1val = 'A'을 조인 절로 이동해야합니다.

SELECT c.itmtxt, a.attr1val, a.attr2val, a.attr3val FROM code c 
JOIN codeattribute a ON c.itmcd = a.itmcd AND a.attr1val = 'A' 
WHERE c.catcd = 1 
AND c.itmtxt = 2 
+0

'INNER JOIN'에서 필터링 절이 추가되는 위치가 중요하지 않기 때문에이 방법은 작동하지 않습니다. 'ON'과'WHERE' 절 조건은 모두 같은 방식으로 동작합니다. 필터의 위치가 중요한 곳인 'OUTER JOINS'만 있습니다. – Deepshikha

+0

감사합니다. @Deepshikha. 나는 그것이 사실이라는 것을 깨닫지 못했다. –

관련 문제