我在这上面花了太多时间,但仍然无法让语法起作用。
这个 select 语句可以在 DBIx::Class 中使用吗?
"SELECT A.id, A.name, count(C.a_id) AS count1,
(SELECT count(B.id FROM A, B WHERE A.id=B.a_id GROUP BY B.a_id, A.id) AS count2
FROM A LEFT OUTER JOIN C on A.id=C.a_id GROUP BY C.a_id, A.id"
下面的代码在 DBIx::Class 中工作,以提取表“C”的计数,但我为添加表“B”的计数所做的多次努力都一再失败:
my $data= $c->model('DB::Model')
->search({},
{
join => 'C',
join_type => 'LEFT_OUTER',
distinct => 1,
'select' => [ 'me.id','name',{ count => 'C.id', -as => 'count1'} ],
'as' => [qw/id name count1 /],
group_by => ['C.a_id','me.id'],
}
)
->all();
我试图在一个查询中获取两个计数,以便将结果保存在一个数据结构中。在另一个论坛上,建议我进行两次单独的搜索调用,然后合并结果。当我查看 DBIx::Class 文档时,它提到“union”已被弃用。使用“文字”DBIx::Class 不起作用,因为它仅用作 where 子句。我不想使用视图(另一个人的建议),因为 SQL 最终将扩展以匹配其中一个 id。如何格式化此查询以在 DBIx::Class 中工作?谢谢。