2014-12-03 2 views
0

Я хочу получить статистику для чего-то.Mysql Count и Split to DAY, WEEK, YEAR для статистики в том же запросе

Я пытаюсь получить счет на сегодня, на этой неделе, в этом месяце.

Мой запрос:

"SELECT COUNT(id) FROM images i WHERE i.user_id = 3 GROUP BY DAY(i.created_at), WEEK(i.created_at), MONTH(i.created_at)" 

Выход:

array(7) { 
    [0]=> 
    array(1) { 
    ["COUNT(id)"]=> 
    string(1) "1" 
    } 
    [1]=> 
    array(1) { 
    ["COUNT(id)"]=> 
    string(1) "1" 
    } 
    [2]=> 
    array(1) { 
    ["COUNT(id)"]=> 
    string(1) "5" 
    } 
    [3]=> 
    array(1) { 
    ["COUNT(id)"]=> 
    string(1) "5" 
    } 
    [4]=> 
    array(1) { 
    ["COUNT(id)"]=> 
    string(1) "7" 
    } 
    [5]=> 
    array(1) { 
    ["COUNT(id)"]=> 
    string(2) "17" 
    } 
    [6]=> 
    array(1) { 
    ["COUNT(id)"]=> 
    string(1) "1" 
    } 
} 

Но я хочу, чтобы разделить как:

day = 5, 
week = 15, 
month = 67 

Но как?


Полный Рабочий запрос:

SELECT 
       COUNT(i.id) AS `all`, 
       (
        SELECT 
         COUNT(id) 
        FROM 
         images 
        WHERE 
         user_id = i.user_id AND WEEK(created_at) = WEEK(NOW()) 
       ) 
       AS `week`, 
       (
        SELECT 
         COUNT(id) 
        FROM 
         images 
        WHERE 
         user_id = i.user_id AND MONTH(created_at) = MONTH(NOW()) 
       ) 
       AS `month`, 
       (
        SELECT 
         COUNT(id) 
        FROM 
         images 
        WHERE 
         user_id = i.user_id AND DAY(created_at) = DAY(NOW()) 
       ) 
       AS `day` 
      FROM 
       images i 
      WHERE 
       i.user_id = " . $user->getId() 
+0

Как вы будете знать, какой день/неделю/месяц есть? – Strawberry

+0

Я просто хочу знать, сегодня, на этой неделе, в этом месяце (статистика текущей даты.) –

+0

Является ли текущий и последний? – Strawberry

ответ

1

Если я вас понял, верно, это должно быть то, что вы ищете

SELECT Count(*)       AS day, 
     (SELECT Count(*) 
     FROM images 
     WHERE user_id = i.user_id 
       AND Week(i.created_at) = Week(Now()) 
     GROUP BY Week(i.created_at)) AS week, 
     (SELECT Count(*) 
     FROM images 
     WHERE user_id = i.user_id 
       AND Month(i.created_at) = Month(Now()) 
     GROUP BY Month(i.created_at)) AS month 
FROM images i 
WHERE i.user_id = 3 
     AND Day(i.created_at) = Day(Now()) 
GROUP BY Day(i.created_at) 
+0

Старый работал. :(Это не –

+0

Sum не работает братан без суммы, работает хорошо –

+0

Хорошо, так что я редактировал его обратно, если это было то, что вы искали – DanR

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