我有两个桌子。一张表包含所有用户信息。另一个表包含用户每次登录我们系统的记录。 我需要显示的是有多少用户未登录系统。
我们有1613条记录。在给定时间段内登录262个用户。比较查询应显示差异,但我的查询不显示。它返回411(这是从哪里来的,我不知道)我显然做错了。
这是我的查询。
SELECT s.id
,s.first_name
, s.surname
, s.email
, s.`Status`
,date_format(s.subscription_start_date,'%Y-%m-%d %H:%i') as subscription_start
,date_format(s.subscription_expiry_date,'%Y-%m-%d %H:%i') as subscription_expiry
FROM user s LEFT JOIN user_log eul ON s.id=eul.userid
WHERE eul.userid IS NULL
and (s.status = 'Live' and s.activated = 1)
and s.payment > 0
and s.subscription_start_date < now()
and s.subscription_expiry_date > now()
我希望这是有道理的。
好的。 以下是更新的信息
这是原始查询。这将撤回所有已登录我们系统的人员。他们的名字旁边有一个计数。此数据适用于六月。我需要知道谁在六月内没有登录。这有道理吗?
select
s.first_name
, s.surname
, s.email
,date_format(s.subscription_start_date,'%Y-%m-%d %H:%i') as subscription_start
,date_format(s.subscription_expiry_date,'%Y-%m-%d %H:%i') as subscription_expiry
, count(*) as count
, concat(year(eul.date_created), '-', lpad(month(eul.date_created), 2, 0)) as date
from user_log eul
INNER join user s on (s.id = eul.userid)
Where s.payment > 0 and s.subscription_start_date <= {d '2018-06-30'} and s.subscription_expiry_date > now()
and (s.status = 'Live' and s.activated = 1)
and eul.date_created >= {d '2018-06-01'}
and eul.date_created <= {d '2018-06-30'}
group by email, concat(year(eul.date_created), '-', lpad(month(eul.date_created), 2, 0))
先谢谢。 安德里亚