1
我想通過使用下面的兩個嵌套查詢來創建我的網站上成員的排行榜。使用嵌套查詢在MySQL中創建排行榜(排名成員列表)
第一個查詢抓住成員的名單:
SELECT member_id, username, screen_name FROM exp_members WHERE group_id IN (1,5) LIMIT 100
第二個查詢嵌套在第一查詢中,並抓住多少次成員的條目已經收藏了數:
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"
}
所以我的代碼是這樣的:
[first query]
[second query]
..output one row of the leaderboard..
[/second query]
[/first query]
嵌套第一GI內的第二查詢給我一個合適的成員名單和他們每次收到的投票數量,但該名單是按第一個(外部)查詢而不是第二個(內部)查詢進行排序的。
兩個問題:
- 我怎麼排序成員由
favorite_count
降序排列的列表? - 什麼是最節約資源的方式來做到這一點?我懷疑嵌套查詢不是最好的方法,但我真的不知道更好。
絕對搖滾。那很完美。我在最後的「限制100」之前添加了一個DESC以便正確排序。謝謝!我也很欣賞對演出的評論。我會爲未來保留觸發器。 – 2012-03-26 01:32:25