我正在尝试使用下面的两个嵌套查询在我的网站上创建成员排行榜。
第一个查询获取成员列表:
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]
将第二个查询嵌套在第一个查询中会给我正确的成员列表和他们各自收到的票数,但该列表是按第一个(外部)查询而不是第二个(内部)查询排序的。
两个问题:
- 如何按
favorite_count
降序对成员列表进行排序? - 什么是最节省资源的方法?我怀疑嵌套查询不是最好的方法,但老实说我不知道更好。