我从以下查询中得到以下结果:
SELECT users.ID, user_registered, post_date, post_type
FROM users LEFT OUTER JOIN posts ON users.ID = post_author
ORDER BY ID, user_registered, post_date, post_type
ID user_registered post_date post_type
---+-----------------+------------------+--------------+
1 6/18/2012 4:04 6/18/2012 4:04 page
1 6/18/2012 4:04 6/18/2012 4:04 post
1 6/18/2012 4:04 6/18/2012 10:32 nav_menu_item
1 6/18/2012 4:04 6/18/2012 10:32 nav_menu_item
1 6/18/2012 4:04 6/18/2012 10:32 nav_menu_item
1 6/18/2012 4:04 6/18/2012 10:32 nav_menu_item
1 6/18/2012 4:04 6/18/2012 10:32 nav_menu_item
1 6/18/2012 4:04 6/18/2012 10:33 nav_menu_item
1 6/18/2012 4:04 6/18/2012 10:48 attachment
1 6/18/2012 4:04 6/19/2012 10:32 attachment
1 6/18/2012 4:04 6/30/2012 6:49 nav_menu_item
1 6/18/2012 4:04 6/30/2012 7:04 nav_menu_item
1 6/18/2012 4:04 7/1/2012 7:39 attachment
1 6/18/2012 4:04 7/13/2012 10:00 page
1 6/18/2012 4:04 7/20/2012 18:18 page
1 6/18/2012 4:04 7/21/2012 16:37 post
1 6/18/2012 4:04 7/23/2012 14:15 page
1 6/18/2012 4:04 7/31/2012 15:12 post
1 6/18/2012 4:04 8/1/2012 8:47 attachment
2 6/19/2012 10:05 NULL NULL
6 6/29/2012 4:47 6/19/2012 10:11 attachment
6 6/29/2012 4:47 6/19/2012 10:15 attachment
6 6/29/2012 4:47 6/19/2012 10:17 attachment
6 6/29/2012 4:47 6/19/2012 10:20 attachment
6 6/29/2012 4:47 6/19/2012 10:22 attachment
6 6/29/2012 4:47 6/28/2012 0:00 employee
6 6/29/2012 4:47 6/29/2012 0:00 employee
6 6/29/2012 4:47 8/1/2012 0:00 employee
6 6/29/2012 4:47 8/2/2012 0:00 employee
6 6/29/2012 4:47 8/2/2012 0:00 employee
6 6/29/2012 4:47 8/2/2012 0:00 employee
7 7/7/2012 16:52 7/31/2012 14:26 post
20 7/21/2012 14:48 7/21/2012 21:53 post
20 7/21/2012 14:48 7/22/2012 12:50 post
21 7/27/2012 14:56 NULL NULL
ID
: 用户身份。唯一的主键user_registered
:用户成为网站一部分的日期时间post_date
: 用户创建帖子的日期时间post_type
:用户创建的帖子类型- 我需要获取自用户上次
employee
发帖以来的天数(post_date
wherepost_type = 'employee'
)。 - 如果用户还没有
employee
发帖,那么我需要获取用户注册后的天数(user_registered
)。
- 我需要获取自用户上次
要求
我只需要获取ID
所有用户
- 其最近
employee
的发布日期是例如< 7
几天或>= 14
几天,或BETWEEN 6 AND 14
根据需要;或者 - 如果用户没有
employee
帖子,则获取注册< 7
天数或>= 14
天数的用户,或BETWEEN 6 AND 14
如#1。
< 7
我为一个案例尝试了以下查询:
SELECT users.ID
FROM users LEFT OUTER JOIN posts ON users.ID = post_author
GROUP BY ID
HAVING MIN(DATEDIFF(NOW(), IFNULL(post_date, user_registered))) < 7
它ID
按预期产生 s 1、6 和 7,因为:
- 有帖子的用户(6)
employee
没有其他人的任何其他帖子post_type
;和 - 没有
employee
帖子的用户(1、7)从他们的user-registered
日期开始计算。
但是当这个查询中断时
employee
有帖子的用户也有其他post_type
的
因为我不能将日期计算限制为employee
post_type
仅限帖子。如果用户有 apost
或 apage
或 an attachment
,即比他的 latest 晚 2 天employee
,则日期计算将返回post
orpage
或的结果attachment
。
所以我尝试包含WHERE post_type = 'employee'
,但只ID
返回了 6 个,因为所有其他用户都没有employee
帖子。所以我失去了我的第二个要求。
我该怎么做?提前致谢。