下記の2つのネストされたクエリを使用して、自分のサイトにメンバーのリーダーボードを作成しようとしています。ネストされたクエリでMySQLのリーダーボード(メンバーのランク付けされたリスト)を作成する
最初のクエリは、メンバーのリストをつかむ:
SELECT member_id, username, screen_name FROM exp_members WHERE group_id IN (1,5) LIMIT 100
2番目のクエリは、最初のクエリ内にネスト、およびメンバーのエントリがお気に入りに登録してきた回数をカウントグラブされています
SELECT COUNT(*) AS favorite_count
FROM qb_channel_titles, qb_channel_data, qb_matrix_data
WHERE qb_channel_titles.channel_id = '1'
AND qb_channel_titles.entry_id = qb_channel_data.entry_id
AND qb_channel_titles.entry_id = qb_matrix_data.entry_id
AND field_id = '13'
AND author_id = 'MEMBER_ID_FROM_FIRST_QUERY'
ORDER BY favorite_count DESC"
}
を
だから私は持っているコードは次のようである:
最初のGI内の2番目のクエリをネスト[first query]
[second query]
..output one row of the leaderboard..
[/second query]
[/first query]
メンバーの適切なリストと、それぞれが受け取った投票の数が表示されますが、リストは2番目(内側)のクエリではなく最初の(外側の)クエリでソートされます。
つの質問:
- どのように私が降順に
favorite_count
によってメンバーのリストを並べ替えるのですか? - これを行う最も効率的な方法は何ですか?私は入れ子になっているクエリは最善の方法ではないと思っていますが、私は正直言ってそれほど良く分かりません。
あなたは絶対にロックします。それは最高です。私はちょうど最終的な "LIMIT 100"の前にDESCを追加してそれを適切にソートしました。ありがとうございました!パフォーマンスに関するコメントも感謝しています。私は将来のためにトリガーを念頭に置いておきます。 –