2014-10-03 3 views
0

Левые говорят, что у меня есть таблица ->commentsВыбор строк на основе временного интервала

id| comment | thread_id |   time  | 
1 xyz  1   2013-1-10 19:21:17 
2 xyz  1   2013-1-11 19:21:17 
3 xyz  2   2013-1-14 19:21:17 
4 xyz  2   2013-2-10 19:21:17 
5 xyz  1   2013-2-10 19:21:17 
6 xyz  1   2013-2-10 19:21:17 
7 xyz  1   2013-2-10 19:21:17 
8 xyz  1   2013-4-10 19:21:17 
9 xyz  1   2013-4-10 19:21:17 
10 xyz  1   2013-6-10 19:21:17 

Теперь я хочу, чтобы получить общее Нет комментариев COUNT() в частности thread_id на интервале каждого месяца

Так что у меня есть массив примерно такой -> (если мы возьмем thread_id = 1)

$total[0] => 2 
$total[1] => 6 
$total[2] => 6 
$total[3] => 8 
$total[4] => 8 
$total[5] => 9 

... так далее до $ total [11] => 9

Я буду в состоянии сделать это по 12 запросам за каждый месяц, но это не слишком хорошо.

Любой может сделать это с помощью одного запроса?

ответ

0

Чтобы произвести полный спектр месяцев, вы бы использовать некоторые устройства, как следующий, в основном список всех возможных значений, затем присоедините данные к этому через левое соединение:

-- just an example 
SELECT 
     * 
FROM (
     select 1 as th union all 
     select 2 as th union all 
     select 3 as th union all 
     select 4 as th union all 
     select 5 as th union all 
     select 6 as th union all 
     select 7 as th union all 
     select 8 as th union all 
     select 9 as th union all 
     select 10 as th union all 
     select 11 as th union all 
     select 12 
    ) mon 
     LEFT JOIN (
        SELECT 
         MONTH(time)  AS Month 
         , COUNT(thread_id) AS No_of_Comment 
        FROM comments 
        GROUP BY 
         MONTH(time) 
      ) dat 
        ON mon.th = dat.month 
0

Да, вы можете сделать это с помощью группы заявлением: -

Вот Sql для этого: -

Select month(time) as Month, COUNT(thread_id) as No_of_Comment from comments group by month(time) 
+0

ОК, это было легко! –

+0

Очевидно, что, если комментариев нет для данного месяца, то этот месяц будет отсутствовать в результате. – Strawberry

+0

Вы также можете использовать 'UNION', чтобы сделать видимыми месяцы. –

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