0

ユニーク ユーザーの MAX スコア オブジェクトを選択しようとしています。

したがって、ユーザーは明確である必要があり、ユーザー (注文) の最大スコアを受け取る必要があり、この最大スコアの dataAdded などの他のオブジェクト値を取得する必要があります。

    $query = $this->createQueryBuilder('s');
    $query->select('DISTINCT s.user, s');
    $query->where('s.challenge = :challenge')->setParameter('challenge', $challenge);

    $query->andWhere('s.date_added BETWEEN :monday AND :sunday')
       ->setParameter('monday', $startDate->format('Y-m-d'))
       ->setParameter('sunday', $endDate->format('Y-m-d'));

    $query->orderBy('s.score', 'DESC');

    //$query->groupBy('s.user');
    $query->setMaxResults($limit);

    $results = $query->getQuery();

どんなに頑張ってもうまくいかない。MAX(s.score) でグループ化しようとしましたが、これはランダムなオブジェクトを同じオブジェクトではなく最大スコアに関連付けます..

誰にもこれに対する解決策がありますか?明確に機能していないようです...

生成されたクエリ:

SELECT DISTINCT s.user, s FROM Digital\ApplicationBundle\Entity\ChallengeScore s WHERE s.challenge = :challenge AND (s.date_added BETWEEN :monday AND :sunday) ORDER BY s.score DESC

しかし、エラー;(

[Semantical Error] line 0, col 18 near 'user, s FROM': Error: Invalid PathExpression. Must be a StateFieldPathExpression

ユーザーが関係であることは言及する価値があります。他のファイルでこれを試すと、これは正常に機能します...

4

1 に答える 1

0

count 個の異なる値を取得する必要がある場合は、countDistinctを使用できます。ただし、個別の値をすべて取得する必要がある場合は、groupByを使用してください

于 2014-03-08T19:38:42.623 に答える