ENeLsOn
@ENeLsOn

Как вывести список из таблицы сортируя по данным из другой таблицы?

Есть несколько таблиц:
1. Кланы (id, name)
2. Участники (id, clan, player)
3. Statistic (id, player, x, y)
4. Представление rating для таблицы statistic (x+y)

Объединить таблицы невозможно, каждую из них используют плагины (кроме представления)

Хотелось бы выводить список таблиц в виде:
название клана, количество участников, суммарный рейтинг

С количеством участников, конечно, разобрался.. А вот как добавить еще и суммарный рейтинг + сортировка по нему?
  • Вопрос задан
  • 65 просмотров
Решения вопроса 1
@TelepnevDmitriy
Senior Web Developer
select
    clan.name,
    count(participant.id),
    sum(stat.x) + sum(stat.y) s
ftom clan
join participant on participant.clan = clan.id
join statistic stat on stat.player = participant.player
group by clan.name
order by s desc


Если у вас нет ограничений уникальности в participant на связку (clan,player) и в statistic на (player) то значения могут быть не актуальные,потому что в таблицах записи могут дублироваться.

Еще, нужно обязательно понимать,что это fullscan. Если записей много - я бы сделал отдельную табличку и её в момент минимальной нагрузки чистил и инсертил. Тут меня MySQL гуру поправят, есть ли в MySQL materialized view или что-то подобное... Чтобы не городить велосипед.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы