【发布时间】:2012-10-02 02:29:36
【问题描述】:
我将仅解释与问题相关的内容,并省略任何其他不相关的细节。
现状:
我有两张桌子,硬币和用户。
coin有三个字段id, uid, fid.
币表关联了用户(已经在系统中注册并可以邀请好友)和他们的好友(已经接受邀请并成为会员)-该表仅存储被邀请后成功注册-
id是唯一索引。uid是存储用户id。fid是存储好友ID(接受邀请并成为系统成员的好友)。
users 包含有关用户的常用信息,例如 id, fname, lname, email ...etc 和 date_create
目标: 查找发出最多邀请的获奖者。换一种说法。 要查找邀请次数最多的顶级用户及其被邀请的朋友必须在 2012-08-31 之前注册。日期存储在表“用户”列 date_create 中。日期格式为 yyyy-mm-dd
例子-
Table coin
id uid fid
1 333 777
2 444 888
3 555 999
4 333 123
5 444 456
6 333 789
Table users
id date_create
333 2012-07-15
444 2012-07-20
555 2012-07-25
777 2012-07-25
888 2012-07-25
999 2012-10-02 <-- I don't need this to be counted
123 2012-07-25
456 2012-07-25
789 2012-07-25
表示用户 333 的邀请数量最多(邀请了 3 个用户)-> 777,123 和 789 用户 444 邀请了 2 个用户,用户 555 只邀请了 1 个用户,但是对于 555,由于他的朋友(999)在 2012-08-31 之后注册,所以不会被计算在内
我想要的是用户
333 has made 3 invitations before 2012-08-31.
444 has made 2 invitations before 2012-08-31.
到目前为止我所做的是:[完全不确定]
SELECT
c.uid,
u.fname,
u.lname,
u.phone,
u.email,
u.country,
COUNT(c.fid) AS NoOfFriends
FROM coin AS c
JOIN users AS u
ON c.uid = u.id
GROUP BY c.uid
ORDER BY NoOfFriends desc
这个查询带来(据我所知)邀请最多的用户,无论他/她的朋友何时注册。
所以我的问题是: Q1) 如何将日期条件应用到我的查询中?
我想要拥有最多好友邀请的用户。他/她邀请的朋友必须在2012-08-31之前接受邀请并注册。在该日期之后任何其他接受的邀请都不应计算在内。
请提供代码示例。
【问题讨论】:
-
你的问题不是很清楚。与其同时问两个问题,不如只问一个问题会更清楚。如果你有两个问题,然后选择一个,然后先问那个。如果您仍然需要更多帮助,您可以稍后再创建一个问题。让你的每一个问题都清晰、准确和独立,避免一次混淆多个问题,否则你只会混淆自己和其他人。
-
删除了第一个问题。感谢您的评论。
-
"用户必须在 2012 年 10 月 31 日之前注册" 哪个表包含注册日期以及列的名称是什么?
-
在表 'users' 列 date_create.
-
这与您最初提出的问题完全不同。或者你的问题太糟糕了,以至于无法从你最初写的内容中猜出你想要什么。请花一些时间改进您的问题,使其与您在 cmets 中所写的内容相匹配。 请在问题中包含您想要的结果集。 考虑编写一个 SQL fiddle。用 SQL 提琴写一个好问题可能要多花 10 分钟,但如果你一开始就这样做了,那么你现在已经有了答案。
标签: mysql database select count conditional-statements