簡體   English   中英

在MySQL中基於今天的日期進行項目計數

[英]Count of Items Based on Todays Date in MySQL

我有2個表,一個具有user_info ,另一個具有user_activies

我有一個查詢,可從user_info表中獲取幾行。 我想添加到此查詢的是;

我想獲取今天的用戶活動,並從user_activities表中對其進行計數

user_info
| id | name | views | lastlogin | regdate | group_id |

user_activities
| id | userid | activity | date |

當前查詢

select id, name, views, lastlogin 
from user_info 
where group_id = 2 
ORDER BY user_info.id ASC

我如何才能將今天已完成的活動總數連接起來?

提前致謝!

你要這個:
SELECT i.id, i.name, i.views, i.lastlogin, Count(a.id)
  FROM user_info i, user_activities a
  WHERE i.group_id = 2 AND i.id = a.userid
    AND a.date = CURDATE()
  ORDER BY user_info.id ASC;
這為您提供了每個用戶的記錄以及今天的活動。 (您可能需要更改`a.date = CURDATE()`以適合您的時間戳需求)

這不會給您一些正常的用戶。 相反,您將必須選擇一個用戶。 如果您選擇多個用戶,您將獲得一個隨機名稱,其中包含所有選定用戶的所有活動的總和。
或簡而言之: 這不能解決您的問題。 采取JOIN解決方案。

我假設日期是日期類型:

select 
   u.id,
   u.name,
   u.views,
   u.lastlogin,
    sum(
  -- if datetime IF (date(date) = curdate() , 1, 0)
  IF (date = curdate() , 1, 0)
     ) as 'today_activities'

from user_info u 
      -- using left join you will get the list of all user even if they
      -- don't have any activities today with sum activities= 0
      LEFT JOIN user_activities a on u.id = a.userid
where 
   group_id = 2
group by u.id
ORDER BY u.id ASC

您可以嘗試以下方法:

SELECT i.id, i.name, i.views, i.lastlogin, Count(a.activities)
  FROM user_info i inner join user_activities a
  WHERE i.group_id = 2 AND i.id = a.userid
    AND a.date = now()
  ORDER BY user_info.id

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM