2013-09-30 4 views
0
I 테이블의 datecolumn 다른 테이블의 날짜의 다른 두 개의 세트들의 범위에 있는지 날짜의 상태를 확인해야

..MYSQL에 대한 쿼리에 Null 날짜를 지정하는 방법은 무엇입니까?

첫 번째 테이블 :

1. id 
2. name 
3. date 

번째 테이블;

1. id 
. 
. 
. 
. 
17 : Start Date 
18 : End Date 

I는 먼저 테이블 date 필드 및 제 Start Date 테이블 End Date의 범위에 있는지를 확인한다.

예컨대

t1.date>= t2.Start Date and t1.date <= t2.End Date 

문제는, 그 다음, 두 번째 조건 복귀 truenull 경우 t2가 .. 널 어떤 행이 있다는 것이다.

첫번째 경우

t1.date = 26-Nov-2011 
t2.Start Date = 25-Nov-2011 
t2.End Date = 27-Nov-2012 
*Passed* 

번째 경우

t1.date = 26-Nov-2011 
t2.Start Date = 25-Nov-2011 
t2.End Date = 25-Nov-2011 

    *FAILED* 

THIRD CASE

t1.date = 26-Nov-2011 
t2.Start Date = 27-Nov-2011 
t2.End Date = 27-Nov-2011 

    *FAILED* 

네 번째 사례

도와주세요.

+0

sta에'> = AND <='대신'BETWEEN' 문을 사용하십시오 rters. –

답변

4

기본적으로 "진행중인"사례로 종료일이 없을 때 사례를 처리하기를 원하므로 첫 번째 조건이 참일 경우 사실이어야합니다. 날짜가 후 또는 시작 날짜와

  • A는

    1. : 경우 기본적 조건이 충족된다. 날짜가 종료일 전 또는 종료일입니다.
      b. 종료 날짜를가 없습니다

    지금은 SQL 할 쉽게 : 당신이 betweenisnull를 사용하여 유사한 결과를 얻을 수 있지만, 내가 아는 한, 훨씬 명확입니다

    (t1.date>= t2.StartDate) and ((t1.date <= t2.EndDate) or (t2.EndDate is null)) 
    

    주 조건이 자명하다면, 나는 그것들을 평문으로 읽을 수있다.


    (올드 대답 조인 왼쪽으로 전체 t2 행, 널 (null)이라는 가정하에) 당신은 단지 두 번째 행이 아닌 널 (null), 즉하다는 조건을 추가 할 수 있습니다

    필드 t2.StartDatet2.EndDate가 null 아니라는 것을

    (t1.date>= t2.Start Date and t1.date <= t2.End Date and t2.End Date is not null) 
    
  • +0

    위의 솔루션에서 End Date가 null이면 문이 false를 반환하지만 첫 번째 조건이 참이면 true를 반환해야합니다. – Shashi

    +0

    그것은 질문에서 말한 것과는 다릅니다. 't2' 행 전체가 왼쪽 조인 에서처럼 null이라는 것을 암시합니다. 질문을 수정하고 조건을 명확히하십시오. – SWeko

    +0

    질문이 업데이 트되었습니다 .. :) – Shashi

    0

    당신이 다음 IS NOT NULL

    를 사용하는 것이이

    (t1.date BETWEEN t2.Start Date and t2.End Date AND t2.End Date IS NOT NULL) 
    

    처럼 보일 것이고, BTW 당신이 공간을 사용하지 말아야하는 것은 가능 귀하의 columnnames에서 대신 endDate 또는 end_date를 사용하십시오 (endDate 선호)

    +0

    위의 솔루션에서 종료 날짜가 null 인 경우 문을 반환 false ..하지만 첫 번째 조건이 참이면 true를 반환해야합니다. – Shashi

    +0

    종료 날짜가 null 인 경우 첫 번째 값은 여전히 ​​null을 제공하고, 그렇지 않으면 조금 더 의미하는 내용을 지정해야합니다. –

    +0

    질문 업데이트 – Shashi

    관련 문제