【发布时间】:2014-03-06 22:43:35
【问题描述】:
我有一个允许用户选择某些关键字的应用程序,然后该应用程序会侦听包含这些关键字的推文并将它们存储在数据库中。
对于给定的用户,他们有一个关键字列表。我正在尝试做的是通过计算在给定的日期/月份发生了多少条带有该关键字的推文,来获取有关每个关键字在给定的日期、月份等的表现的一些统计数据。
public class Person extends Model {
@id
long id;
@ManyToMany
List<Keywords> keywords = new ArrayList();
}
public class Keyword extends Model {
@Id
int id;
String keyword;
@ManyToMany
public List<Tweet> tweets = new ArrayList();
}
public class Tweet extends Model {
@Id
int id;
TimeStamp datetime;
}
我认为最好的方法是 Tweet.find --where keyword=kw and date > d-- 但我不知道该怎么做。我应该使用 fetch 吗?下面是一个用普通 SQL 编写的类似查询。
select datetime, count(*) from tweet t left outer join keyword_tweet on t.id=keyword_tweet.tweet_id group by cast(t.datetime as date) having t.datetime > '2014-02-02';
+---------------------+----------+
| datetime | count(*) |
+---------------------+----------+
| 2014-02-02 13:27:45 | 1 |
| 2014-02-08 05:14:04 | 2 |
| 2014-02-09 08:34:31 | 1 |
| 2014-02-12 12:42:02 | 1 |
| 2014-02-13 06:00:09 | 2 |
| 2014-02-14 00:47:04 | 2 |
| 2014-02-15 07:26:30 | 6 |
| 2014-02-16 01:00:00 | 21 |
| 2014-02-17 00:06:50 | 916 |
| 2014-02-18 18:08:56 | 1 |
| 2014-02-19 01:28:40 | 1 |
| 2014-02-24 16:45:11 | 1 |
| 2014-02-26 14:43:54 | 4 |
| 2014-02-27 08:24:09 | 9 |
| 2014-02-28 05:08:16 | 411 |
+---------------------+----------+
所以,从推文中选择(推文 ID 在用户关键字列表中)
我还想按以下方式分组:
cast(t.datetime as date)
并且拥有
date > 2014-02-02 //example date
在某些查询上。感谢大家的帮助!!
【问题讨论】:
标签: java mysql playframework-2.0 ebean