2013-10-19 2 views
0

나는 쿼리에 추가 할 table30에 다른 enddate_column이 있다는 점을 제외하고는 내가 필요한 쿼리를 거의 가지고있다. 현재 cardid가 table3에 있으면 table1과 table2가 같지 않은 부분은 무시됩니다. 하지만 enddate_columntoday보다 작은 한 table3에 일치하는 레코드가 포함되어 있어도 결과를 반환하도록 쿼리를 허용해야합니다.SQL 쿼리 어디 레코드가 존재 제외 제외

SELECT * FROM [table1] 
INNER JOIN [table2] ON [table1].MemberNum = [table2].MEMBERNUM 
WHERE [table1].CardID<>[table2].cardid 
AND EXISTS(SELECT * FROM [TABLE3] WHERE [TABLE3].CARDID<>[table1].CardID) 

나는 그 기준을 추가한다. table3.cardid가 위치한 경우에도 table3.endate이 cardid가 표 3에 위치하기 때문에이 결과를 반환하지 않아야

scenario 2: 
table1.cardid = 10005 table1.membernum = 9 
table2.cardid = 10010 table2.membernum = 9 
table3.cardid = 10005 table3.enddate = '2013-10-31' 

오늘보다 작고 ENDDATE가 크기 때문에

scenario 1: 
table1.cardid = 10005 table1.membernum = 9 
table2.cardid = 10010 table2.membernum = 9 
table3.cardid = 10005 table3.enddate = '2013-10-15' 

이 10005에 대한 결과를 반환해야 오늘보다.

scenario 3: 
table1.cardid = 10005 table1.membernum = 9 
table2.cardid = 10010 table2.membernum = 9 
table3.cardid <>exist table3.enddate <> exist 

해당 ID 나던 표 3에 존재하기 때문에이 cardid 10005의 결과를 반환해야합니다

+1

각 테이블의 데이터와 예상되는 출력 예제는 문제를 이해하는 데 큰 도움이됩니다. 그것의 가능성이있는 또는 쿼리 부분 중 하나에 있지만 그것의 표 2 또는 3 문제가 있다면 설명에서 명확하지. – u07ch

+1

그리고 3 개의 테이블을 모두 합치면 어떨까요? –

+0

@ u07ch 질문에 데이터를 추가했는데, 세 개의 테이블 모두에서 내부 조인을 시도했는데 table3에 대한 조인조차도 여전히 enddate gbb116

답변

0

난 당신이 뭔가를 할 생각; Table3에 대한 외부 조인을 남기고 날짜 필드를 위조 된 yesterdays 날짜와 통합하여 누락 행 테스트를 처리합니다.

SELECT 
    * 
FROM 
    [table1] 

INNER JOIN [table2] 
ON [table1].MemberNum = [table2].MEMBERNUM 

LEFT OUTER JOIN [Table3] 
ON 
    table1.CardID = table3.CardID 

WHERE 
    [table1].CardID<>[table2].cardid 
AND (
    CAST(COALESCE(table3.enddate, DATEADD(dd,-1,GETDATE()) AS DATE) <= GETDATE() 
    ) 
+0

왼쪽에있는 날짜는 시간을 제거하십시오 - 필드에 01/01/2013 20:20을 가지고 있는지 확실하지 않으므로 왼쪽의 시간을 제거하면이를 처리 할 것입니다. – u07ch

+0

완벽하게 작동합니다. 훌륭한 직업입니다. 나는 그것에 익숙하지 않은 유착을 연구 할 필요가있다. 또한 내 상황에서 열을 이미 날짜가 있지만 추가 주셔서 감사합니다 캐스팅을 제거했습니다. – gbb116

+0

coalesce는 isnull과 같지만 목록에 많은 항목을 가질 수 있지만 isnull은 2로 제한됩니다. – u07ch