1

我有一个查询,我想作为 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 关系,所以我猜这将与 vibe 点进行左连接。

我现在拥有的是以下内容:

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

我在将 LOG10 和总和点与 1 的加法和 287015 的乘法集成时遇到问题。

感谢您提供任何帮助,我知道无论我有什么结果,都不是这样做的方法,但我尝试了一些东西但它没有用。谢谢!

4

1 回答 1

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' },
于 2013-07-05T11:40:07.743 回答