0

そのため、組織内のアクティブなコンペティションを取得し、コンペティションをリードしているユーザーを取得しようとする次のクエリがあります。

現在、クエリはアクティブな競技会と各ユーザーの totalPoints を正しく取得しています。すべてのユーザーを取得するようになりました。最上位のユーザーのみを取得したいので、解決策は GROUP BY クエリ、ある種の LIMIT にあると想定していますか?

この画像では、私が得ている結果を見ることができます。ご覧のとおり、各コンペティションのすべてのユーザーを取得しています。ここでは、各コンペティションのトップ ユーザーのみが必要です。

http://i.imgur.com/5OXen4e.png

これをどのように解決できるかについてのアイデアはありますか?

SELECT c.competitionId, c.name, c.start_date, c.end_date, a.userid, u.name, u.profilePic , 

SUM(activity_weight) AS totalPoints

FROM activity_entries a INNER JOIN users1 u ON u.id = a.userid INNER JOIN competitions c ON c.competitionId = a.competitionId

WHERE c.organisationId = 1 AND c.start_date < now() AND c.end_date > now() 
GROUP BY a.userid, c.competitionId ORDER BY c.id DESC
4

1 に答える 1

0

もっと良い方法があります。で 1 つのクエリを実行し、competitions テーブルに参加するだけです。投稿した 2 番目のクエリは、テーブルを結合する方法を知っていることを示しています。

于 2013-09-27T12:16:57.297 に答える