How write RQLQuery?



我是ATG的新手,我有这个问题。我如何编写RQLQuery来提供数据,比如这个SQL查询?

select avg(rating) from rating WHERE album_id = ?;

我正在尝试这种方式:

RqlStatement statement;
Object rqlparam[] = new Object[1];
rqlparam[0] = album_Id;
statement= RqlStatement.parseRqlStatement("album_id= ? 0");
MutableRepository repository = (MutableRepository) getrMember();
RepositoryView albumView = repository.getView(ALBUM);

这个查询为我返回了一个特定album_id的项目,我如何改进我的RQL查询,使其返回平均字段值,就像上面的SQL查询一样。

没有允许计算查询中项目的平均值的RQL语法。因此,您有两种选择。您可以执行当前语句:

album_id= ? 0

然后循环遍历生成的RepositoryItem[]并自己计算平均值(这在大型数据集上可能很耗时,意味着您必须将所有结果加载到内存中,因此可能不是最佳解决方案(,或者您可以实现执行的SqlPassthroughQuery

Object params[] = new Object[1];
params[0] = albumId;
Builder builder = (Builder)view.getQueryBuilder();
String str = "select avg(rating) from rating WHERE album_id = 1 group by album_id";
RepositoryItem[] items =
view.executeQuery (builder.createSqlPassthroughQuery(str, params));

这将在数据库上执行平均计算(它非常擅长这样做(,并节省应用程序中的CPU周期和内存。

也就是说,不要养成使用SqlPassthroughQuery的习惯,因为这意味着你不能太多地使用存储库缓存,这可能会对你的应用程序不利。

相关内容

  • 没有找到相关文章

最新更新