2014-09-12 2 views
0

두 개의 테이블과 프로젝트가 있습니다. 제품 테이블이 같은입니다Mysql 특정 날짜로부터 1 주일의 데이터를 선택하십시오.

,

+-----------------+ 
| id | date_created | 
+-----------------+ 
| 1 | 2014-09-10 | 
| 2 | 2014-05-20 | 
| 3 | 2014-02-20 | 
| 4 | 2014-02-20 | 
+-----------------+ 

그리고 내 project_funded 테이블처럼,

+------------------------------+ 
| id | date_funded | Proj_id | 
+------------------------------+ 
| 1 | 2014-09-10 |  1 | 
| 2 | 2014-09-11 |  1 | 
| 3 | 2014-09-11 |  1 | 
| 4 | 2014-09-12 |  1 | 
+------------------------------+ 

이제 프로젝트 1의 그것에서 next 1 week data count가 시작 날짜를 얻는 방법에 대해 설명합니다.

예, PROJECT_ID 1이 2014년 9월 10일에서 시작

내가 같은 결과를 필요로 해요,

2014-09-10 => 1 
2014-09-11 => 2 
2014-09-12 => 1 
+0

계속하십시오. 뭔가 해봐. – Strawberry

+0

@Strawberry가 언급했듯이, 시도한 것을 보여줄 수 있습니까? 간단한 힌트 ... "GROUP BY"절이 필요합니다 :) – DRapp

답변

0

이에 의해 그룹과 기본 쿼리입니다 ..

select 
     pf.date_funded, 
     count(*) as totalEntries 
    from 
     project_funded pf 
    where 
     pf.proj_id = 1 
    group by 
     pf.date_funded 
    order by 
     pf.date_funded 

이제 프로젝트를 만든 날짜로부터 1 주일 만 지키면 프로젝트 테이블에 대한 추가 참여가 필요합니다. 프로젝트의 생성 날짜를 기준으로 기간 제한을 설정하십시오. 날짜와 위의 샘플에서

select 
     pf.date_funded, 
     count(*) as totalEntries 
    from 
     project_funded pf 
     JOIN project p 
      on pf.proj_id = p.id 
    where 
      pf.proj_id = 1 
     AND pf.date_funded >= p.date_created 
     AND pf.date_funded < DATE_ADD(p.date_created, INTERVAL 8 DAY); 
    group by 
     pf.date_funded 
    order by 
     pf.date_funded 

는, 당신은 INTERVAL 1 WEEK 수 있었다 일주 (7 일)를 언급했다. 그러나 날짜가 날짜/시간을 기반으로하는 경우 모든 7 일을 포함하고 오후 11시 59 분 59 초를 포함해야합니다. 이것이 제가 8 일보다 짧았던 이유입니다. 그래서 8 일 전날 밤이 끝날 때까지 7 일 동안까지 모든 것을 포함합니다.

관련 문제