Tenho duas tabelas, uma contendo enquetes e outra contendo votos de enquetes, assim (simplificada):
CREATE TABLE IF NOT EXISTS polls (
id SERIAL PRIMARY KEY,
token VARCHAR(20)
);
CREATE TABLE IF NOT EXISTS poll_votes (
id SERIAL PRIMARY KEY,
account VARCHAR(255) NOT NULL,
poll_id INT NOT NULL,
token_one BIGINT,
token_two BIGINT,
token_three BIGINT
[etc.]
);
Há um número crescente de colunas de tokens na poll_votes
tabela, podendo haver mais de mil delas. Existem várias poll_votes
linhas para cada poll
linha e preciso calcular quantos tokens no total estão votando em cada enquete. A polls.token
coluna contém o nome da coluna do token a ser utilizada, ou seja, especifica qual token deve ser utilizado para contar os resultados daquela enquete específica.
Portanto, tenho uma consulta como esta para calcular os resultados quando há, digamos, apenas uma coluna de token:
SELECT p.token,
(
SELECT SUM(token_one)
FROM poll_votes pv
WHERE p.id = pv.poll_id
GROUP BY pv.poll_id
) AS total_token_one
FROM polls p;
No entanto, isso codifica a token_one
coluna. Considerando que eu preciso que ele seja definido dinamicamente com base no valor que existe na token
coluna da polls
tabela. Como eu posso fazer isso?
Atualizar:
Eu criei essa estrutura de tabela (mesmo que ela crie desafios) porque há um número grande e continuamente crescente de tokens. Se houver uma linha separada poll_votes
para cada token, cada voto poderá exigir a inserção de centenas de linhas (já que cada conta pode ter centenas de saldos de token). Portanto, para um grande número de contas de votação, torna-se um grande número de linhas.