【发布时间】:2015-10-22 10:43:28
【问题描述】:
我有以下 sql 语句,我想将其转换为学说查询生成器。目标是计算评分值为 1 和评分值为 2 的评分数量。
SELECT
COUNT(CASE WHEN rating.rating = 1 THEN rating.rating END) as rat1,
COUNT(CASE WHEN rating.rating = 2 THEN rating.rating END) as rat2
FROM rating
这个 sql 语句运行良好 - 但是当我尝试将其转换为 Doctrine 语句时,它不再运行了。当什么都不应该被计算时(因为这个值不存在评级),它返回一个“1”而不是一个 0。当没有什么可以计算时,我如何告诉教义简单地返回一个零? 我通过删除 "ELSE 0" 进行了尝试,但随后我收到一个错误,提示此部分是必需的..
return $qb
->addSelect('COUNT(CASE WHEN r.rating = 1 THEN r.rating ELSE 0 END) as rat_1')
->addSelect('COUNT(CASE WHEN r.rating = 2 THEN r.rating ELSE 0 END) as rat_2')
->getQuery()
->getResult();
问候,
"sum" 不是必需的 - 例如: 投票 2,2,2,2,2 应该返回 5 ,因为值为 2 的评级被投票了 5 次。
【问题讨论】:
-
使用
sum而不是count来获得你需要的东西。 -
嘿,我不想总结值 1+1+1+1 或 2+2+2+2+,我想计算一个值的评分频率,例如2+2+2+2 = 4(值为 2 的评级的时间)。问候
标签: php sql symfony doctrine-orm