Eu criei duas tabelas no MySQL. Um ( Todo_tbl
) contém os dados enquanto o outro ( Statistics_tbl
) contém as somas de uma das variáveis de Todo_tbl
.
Seguindo as definições dessas tabelas:
create table Todo_tbl (
id INT auto_increment,
person VARCHAR(45) ,
task VARCHAR(45) ,
duration INT(4),
deadline_day VARCHAR(2),
deadline_month VARCHAR(2),
PRIMARY KEY(id)
)ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
insert into Todo_tbl values(1,'John', 'dust the floors', 40,04,03);
insert into Todo_tbl values(2,'Matt', 'do the dishes', 15,02,02);
insert into Todo_tbl values(3,'Mary', 'dusting', 40,03,02);
insert into Todo_tbl values(4,'Chloe', 'cleaning the windows', 75,04,05);
insert into Todo_tbl values(5,'John', 'wash the floors', 60,03,03);
insert into Todo_tbl values(6,'Bridget', 'take out the trash', 15,03,03);
insert into Todo_tbl values(7,'Matt', 'do the laundry', 18,02,02);
insert into Todo_tbl values(8,'Bridget', 'water the plants', 15,03,03);
select * from Todo_tbl;
create table Statistics_tbl (
SELECT person, SUM(duration) as total_duration FROM Todo_tbl GROUP BY person
);
select * from Statistics_tbl;
O problema é que sempre que adiciono novos dados ao Todo_tbl
, eles não são considerados no Statistics_tbl
.
Existe alguma maneira de conectar duas tabelas, para que quando houver uma alteração em uma, a outra responda também?
Por que você precisa de uma tabela para armazenar as estatísticas quando você tem uma consulta perfeitamente boa que pode obter a mesma coisa da tabela original?
Os bancos de dados gostam de se ater a um conceito conhecido como "Fonte Única da Verdade".
Uma tabela (ou um grupo delas) contém os dados fundamentais. Se isso está errado, está tudo errado. Nesse caso, esse é o seu todo_tbl.
Se você precisar de outra tabela que tenha que ser mantida em sintonia com todo_tbl - como quer que seja feito - então você corre o risco de as duas ficarem fora de sintonia e deturpar o que é o quê.
Sugestão: Pop um índice em Todo_tbl.person (pode ajudar com o agrupamento) e use a instrução select que você já tem para obter as estatísticas como o coração de uma View que obtém os dados estatísticos diretamente da Fonte Única da Verdade.