rat*_*m3n 17 doctrine symfony doctrine-orm symfony-2.1
我想选择所有+ MAX值并仅接收具有最大值的行.
$query = $this->createQueryBuilder('s');
$query->where('s.challenge = :challenge')->setParameter('challenge', $challenge);
$query->groupBy('s.score');
$query->getQuery();
return $query->select('s.*, MAX(s.score) AS max_score')->getQuery()->getResult();
Run Code Online (Sandbox Code Playgroud)
我怎么能在学说中实现这一点?我收到一个错误*找不到属性.我试图一个接一个地选择它们,但也没有运气.
目标是实现这样的目标
SELECT user, challenge, whateverelse, MAX(score) FROM users_scores_table GROUP BY user_id
Run Code Online (Sandbox Code Playgroud)
请帮忙 ;)
rat*_*m3n 22
这是一个最终的工作查询
$query = $this->createQueryBuilder('s');
$query->select('s, MAX(s.score) AS max_score');
$query->where('s.challenge = :challenge')->setParameter('challenge', $challenge);
$query->groupBy('s.user');
$query->setMaxResults($limit);
$query->orderBy('max_score', 'DESC');
return $query->getQuery()->getResult();
Run Code Online (Sandbox Code Playgroud)
小智 19
现在为时已晚,但我为记录写了这篇文章.
您可以在SELECT语句中使用"as HIDDEN"来删除最终结果的字段,这样您就可以将其用于排序或分组而无需修改结果字段.
在你的例子中:
$query = $this->createQueryBuilder('s');
$query->select('s, MAX(s.score) AS HIDDEN max_score');
$query->where('s.challenge = :challenge')->setParameter('challenge', $challenge);
$query->groupBy('s.user');
$query->setMaxResults($limit);
$query->orderBy('max_score', 'DESC');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
51552 次 |
| 最近记录: |