SELECT com INSERT com dados de outra tabela e uma coluna com dados informado.

Desenvolvi o código/query MYSQL, (https://pastebin.com/Ni03K5jr) para que a cada 24 horas grave na tabela tbmedia a média dos valores encontrados na tabela tbsensores.

Até aqui tudo beleza!

A minha dificuldade está em fazer o INSERT inserir na coluna tpResultadob da tabela tbmedia a palavra MEDIA.

Não achei nenhum tutorial parecido, e tentei várias possibilidades, mas sem sucesso!
Alguém poderia me ajudar???

Exibições: 293

Responder esta

Respostas a este tópico

Olá Ruy

Como a palavra MÉDIA é fixa, a maneira mais fácil de fazer isso, usando o mesmo SELECT, seria:

INSERT INTO bdarduino.tbmedia (estacao, temp, umid, vent, tpResultadob)
SELECT estacao,
AVG (sensor1) AS temp,
AVG (sensor2) AS umid,
AVG (sensor3) AS vent,
'MÉDIA' as tpResultadob from bdarduino.tbsensores
where datahora between now() - INTERVAL 1 DAY and now()

GROUP BY estacao;

Veja os pontos em negrito. Assim estamos inserindo o campo tpResultadob na cláusula INTO e colocando um campo constante no select. Esse tipo de campo é chamado de campo calculado.

Não consigo testar aqui, mas deve funcionar. Caso contrário, informe a mensagem de erro.

Obrigado.

Funcionou perfeitamente (tirando um errinho de digitação 'b' no final de tpResultado).

Testei e funcionou inclusive para calcular os valores máximos MAX e mínimo MIN, mas com um detalhe; sem espaço entre a função MIN ou MAX e o nome da coluna. Fica a dica para os demais...

Boa tarde José Augusto Cintra

Observando o seu código anterior, e a partir dele preciso implementar mais um detalhe que não estou conseguindo, que é o seguinte:

Na tabela de origem tenho uma outra coluna; DIRECAO, que armazena os pontos cardeais e colaterais (Norte, Noroeste, etc.)

Quando o INSERT acima fosse executado eu precisaria que também fosse verificado na tabela de origem na coluna; DIRECAO, os pontos cardeais e colaterais MAIS ESCRITO. Exemplo-1: NORTE, SUL, SUL, então gravaria na tabela de destino; tbmedia a palavra SUL. Exemplo-2: SUL, NORTE, NORTE, então gravaria na tabela de destino; tbmedia a palavra NORTE.

Ficaria muito agradecido em receber novamente sua contribuição, ou de qualquer outros companheiros aqui... 

Achei isto aqui, mas não estou conseguindo organizar ...

SELECT direcao AS dirventos, COUNT( * ) n FROM tbsensores
GROUP BY direcao
ORDER BY n DESC
LIMIT 1

É essa código mesmo? como montar junto com o outro?

Acho que depois daquele primeiro código/select tem que ser feito este outro select, isso, como?

To tentando...

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço