2011-07-17 3 views
0

내가 포함이 (플러스 10 개 이상의 열)과 같은 테이블이 날짜를 자주 업데이트 기록 100 만 이상 :발견 날짜 간격은 시작과 끝은

id pid start_date   end_date 
    1 761 2011-07-25 00:00:00 2011-08-01 00:00:00 
    2 761 2011-08-01 00:00:00 2011-08-22 00:00:00 
    3 761 2011-08-22 00:00:00 2011-09-19 00:00:00 
    4 802 2011-08-22 00:00:00 2011-09-19 00:00:00 
    5 761 2011-06-05 00:00:00 2011-07-05 00:00:00 

특정 PID에 대한 결과를 좀하고 싶습니다 (결합 된 모든 연속적인 간격을 아래의 예)에서 761 :

id pid start_date   end_date 
    1 761 2011-07-25 00:00:00 2011-09-19 00:00:00 
    5 761 2011-06-05 00:00:00 2011-07-05 00:00:00 

은 현재 내가 코드에서이 일을하고 있지만, DB 측에 완전히이 기능을 이동하고 싶습니다. 아이디어가 있습니까?

편집 : start_date 및 end_date 열은 DATETIME 유형입니다.

+0

당신이 쿼리를 실행할 때의'pid' 값이 있나요 m 참조? – Shef

+0

@Shef - 예, 쿼리를 실행할 때 pid 값이 있습니다. – orom

+0

'start_date'와'end_date' 열은'DATETIME' 타입입니까? – Shef

답변

0

이것은 실제로 코드에서 훨씬 더 효과적입니다. 같은 제품 일 경우 행을 반복하고 종료 날짜를 업데이트하거나 그렇지 않으면 새 배열 항목을 만듭니다.

이 SQL에 얼마나 복잡한의 아이디어를

, y attempt at solving this in SQL Server :

+0

성능 pov에서 복잡해 보입니다. 또한 mysql에 얼마나 쉽게 포팅 될 수 있는지 확신 할 수 없지만 많은 힌트를 주었다. 감사! – orom

+0

다른 답변이 없기 때문에 나는 이것을 받아 들인 것으로 표시했습니다. – orom