Есть ли способ сделать отбор из производной таблицы?
У меня есть ситуация, когда я создаю производную сводную таблицу, и я хотел бы иметь возможность затем выполнить подвыборы по ней на основе различных критериев (по сути, создание сводной таблицы).
Так что... в псевдо это будет выглядеть примерно так...
select
(select sum(score) from derivedTable where username like 'a%') as scoresForANames,
(select sum(score) from derivedTable where username like 'b%') as scoresForBNames
from
( select username, score from gameTable where gameId = 111) derivedTable
Обратите внимание, что это абсурдно упрощенный пример, чтобы проиллюстрировать, к чему я стремлюсь... Мне не нужен этот пример для решения вообще... Мне просто нужно понять, существует ли концептуальный способ в MySQL для достижения того же результата.
Проблема в том, что derivedTable
невидим для подвыборов во внешнем выборе. Итак, мне любопытно, как я могу достичь того же результата, или если я застрял в необходимости писать подвыборы, которые учитывают все критерии индивидуально.
1 ответ
То, как вы хотите сформулировать запрос, состоит в том, чтобы вообще не иметь подзапросов в select
пункт:
select sum(case when username like 'a%' then score end) as scoresForANames,
sum(case when username like 'b%' then score end) as scoresForBNames
from (select username, score
from gameTable
where gameId = 111
) derivedTable;
Конечно, в этом случае вам вообще не нужна производная таблица:
select sum(case when username like 'a%' then score end) as scoresForANames,
sum(case when username like 'b%' then score end) as scoresForBNames
from gameTable gt
where gameId = 111;