如何将SQL函数的部分表达式转换为SQL :: Abstract?

时间:2013-07-05 05:59:06

标签: sql perl dbix-class

我有一个查询,我想作为DBIC结果而不是查询字符串运行。

查询是这样的:

"SELECT posts.*, (((LOG10(SUM(points.point) + 1) * 287015) + 
UNIX_TIMESTAMP(posts.create_time))) as total FROM posts left join points ON
post.post_id = points.post_id GROUP BY posts.post_id ORDER BY total DESC"

由于我建立了关系,我认为我可以避免在查询中使用左连接部分(我在模式Post.pm文件中的关系将has_many关系设置为points表,所以我猜这将会做左连接氛围点。

我现在拥有以下内容:

$resultset->search(
{},
{
 select => [({sum => points.point} + 1) * 287015],
 as => [ 'total' ],
 group_by [qw/ id /],
 order_by => { -desc => 'total' },
}
);

我在将LOG10和求和点加1并乘以287015时遇到问题。

任何帮助都表示赞赏,我知道无论我在那里做什么,都不是这样做的方法,但我尝试了一些东西而且它没有用。谢谢!

1 个答案:

答案 0 :(得分:1)

未经测试,因为您未提供架构和示例数据:

'+select' => [{
    \'(LOG10(SUM(points.point) + 1) * 287015) + UNIX_TIMESTAMP(me.create_time)'
    -as => 'total'
}],
join => 'points',
group_by => 'me.post_id',
order_by => { -desc => 'total' },