我有一个查询,我想作为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时遇到问题。
任何帮助都表示赞赏,我知道无论我在那里做什么,都不是这样做的方法,但我尝试了一些东西而且它没有用。谢谢!
答案 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' },