2014-09-12 42 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的​​從它的開始日期。

例,PROJECT_ID 1開始於2014年9月10日,

我需要的結果一樣的,

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

繼續。嘗試一下。 – Strawberry 2014-09-12 11:59:09

+0

正如@Strawberry所提到的,你能向我們展示你的嘗試嗎?和一個簡單的提示......它需要一個「GROUP BY」子句:) – DRapp 2014-09-12 12:15:35

回答

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周,這將需要額外的連接到項目表中AND AND根據項目創建日期調整日期範圍限制。

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 

在以上的時間的樣品,你提到1周(7天),這可能是一個INTERVAL 1周。但是,如果您的日期是基於日期/時間的,那麼您確實希望所有7天到達並且晚上11:59:59。這就是爲什麼我會少於8天 - 因此它包括從第7天到第8天前的晚上。