2014-09-12 4 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-09-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 неделю после даты был создан проект, для этого потребуется дополнительный присоединиться к таблице проекта и Requ ire ограничение диапазона дат, основанное на дате создания проекта.

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 дней), которые могли бы быть интервальной-НЕДЕЛЯ. Однако, если ваши даты основаны на дате/времени, вы действительно хотите ВСЕ 7 дней до 11:59:59 вечера. Вот почему я сделал МЕНЬШЕ, чем 8 дней - поэтому он включает ВСЕ путь через 7 дней до конца ночи до 8-го дня.

Смежные вопросы