Я пытаюсь создать список лидеров на моем сайте, используя два вложенных запроса ниже.
Первый запрос захватывает список участников:
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
в порядке убывания? - Какой наиболее эффективный способ сделать это?Я подозреваю, что вложенные запросы - не лучший способ, но я, честно говоря, не знаю ничего лучше.