SQL retornar intervalo de valores
Boa tarde , estou com um problema e não estou conseguindo solucionar , tenho uma tabela pontuacao (cod_pontuacao , score_inicial , score_final , dias_inicial , dias_final , descricao) , essa tabela tem valores fixos. Exemplo
cod_prod = 1
descricao = medio
score_inicial = 24
score_final = 31
dias_inicial = 731
dias_final = 1095 . Nessa tabela eu quero pegar a descricao para gravar em uma outra tabela score , na minha outra tabela tem apenas o campo dias , score , quero pegar a descricao desse valor . Exemplo: Paulo , 733 , 27 , a descricao seria = medio . Alguem pode me ajudar ????
cod_prod = 1
descricao = medio
score_inicial = 24
score_final = 31
dias_inicial = 731
dias_final = 1095 . Nessa tabela eu quero pegar a descricao para gravar em uma outra tabela score , na minha outra tabela tem apenas o campo dias , score , quero pegar a descricao desse valor . Exemplo: Paulo , 733 , 27 , a descricao seria = medio . Alguem pode me ajudar ????
Lucas Domiciano
Curtidas 0
Melhor post
Emerson Nascimento
30/05/2018
Não. Não entendi.
"Na minha outra tabela tem apenas o campo dias , score"... como será possível gravar a descrição???
"Na minha outra tabela tem apenas o campo dias , score"... como será possível gravar a descrição???
GOSTEI 1
Mais Respostas
Emerson Nascimento
29/05/2018
deve ser algo assim:
select s.nome, s.score, s.dias, coalesce(p.descricao, 'indefinido') descricao from score s left join pontuacao p on s.score between p.score_inicial and p.score_final and s.dias between p.dias_inicial and p.diasfinal
GOSTEI 0
Lucas Domiciano
29/05/2018
Obrigado pela ajuda , mas não é exatamente isso que eu quero , eu quero pegar o valor do campo descricao da tabela pontuacao , e colocar na do score . Entendeu ?
GOSTEI 0
Lucas Domiciano
29/05/2018
tb_Score cod_score data descricao score dias cod_aluno
tb_pontuacao cod_pontuacao descricao score_final score_inicial dias_inicial dias_final
Onde a tabela pontuacao possui valores definidos ex: Para uma crianca de 730 dias , de 8 a 19 pontos ela é nível médio , dias_inicial = 365 , dias_final = 730 , score_inicial = 8 , score_final = 19 , descricao = nível médio . Eu quero comparar se caso uma criança acerte 14 pontos , que será salvo na tabela score esses 15 e ela tem 369 dias , eu quero comparar esses 369 dias da tabela score , com o intervalo de valores do campo dias_inicial e dias_final da tabela pontuacao , para conseguir o valor descricao que no caso é = nível médio , para salvar na tabela Score , e fazer a mesma coisa com o campo score. Eu não sei se tem como fazer diferente , sem usar tabela pontuacao.
GOSTEI 0
Lucas Domiciano
29/05/2018
Corrigindo * Onde a tabela pontuacao possui valores definidos ex: Para uma crianca de 730 dias , de 8 a 19 pontos ela é nível médio , dias_inicial = 365 , dias_final = 730 , score_inicial = 8 , score_final = 19 , descricao = nível médio . Eu quero comparar se caso uma criança acerte 14 pontos , que será salvo na tabela score esses 1 e ela tem 369 dias , eu quero comparar esses 369 dias da tabela score , com o intervalo de valores do campo dias_inicial e dias_final da tabela pontuacao , para conseguir o valor descricao que no caso é = nível médio , para salvar na tabela Score , e fazer a mesma coisa com o campo score. Eu não sei se tem como fazer diferente , sem usar tabela pontuacao.
GOSTEI 0
Lucas Domiciano
29/05/2018
Corrigindo * Onde a tabela pontuacao possui valores definidos ex: Para uma crianca de 730 dias , de 8 a 19 pontos ela é nível médio , dias_inicial = 365 , dias_final = 730 , score_inicial = 8 , score_final = 19 , descricao = nível médio . Eu quero comparar se caso uma criança acerte 14 pontos , que será salvo na tabela score esses 14 e ela tem 369 dias , eu quero comparar esses 369 dias da tabela score , com o intervalo de valores do campo dias_inicial e dias_final da tabela pontuacao , para conseguir o valor descricao que no caso é = nível médio , para salvar na tabela Score , e fazer a mesma coisa com o campo score. Eu não sei se tem como fazer diferente , sem usar tabela pontuacao.
GOSTEI 0
Emerson Nascimento
29/05/2018
acredito que pra fazer isso diretamente no banco, somente com stored procedure.
create or alter procedure atu_descri
as
declare variable vcod_pontuacao int;
declare variable vdescricao varchar(50);
declare variable vscore_final int;
declare variable vscore_inicial int;
declare variable vdias_inicial int;
declare variable vdias_final int;
begin
for select
cod_pontuacao, descricao, score_final,
score_inicial, dias_inicial, dias_final
from tb_pontuacao
into :vcod_pontuacao, :vdescricao, :vscore_final,
:vscore_inicial, :vdias_inicial, :vdias_final
do
update tb_score set descricao = :vdescricao
where score between :vscore_inicial and :vscore_final
and dias between :vdias_inicial and :vdias_final;
endGOSTEI 0
Raimundo Pereira
29/05/2018
Tenta preencher pelo menos uma linha nas duas tabelas mais ou menos de como você quer que retorne.
Post o print de ambas tabelas.
Nome de cada tabela com os campos ajudam na resolução também.
Tentei interpretar mais não rolou.
Talvez com a imagem dê uma clareada e alguém possa te ajudar.
Post o print de ambas tabelas.
Nome de cada tabela com os campos ajudam na resolução também.
Tentei interpretar mais não rolou.
Talvez com a imagem dê uma clareada e alguém possa te ajudar.
GOSTEI 0
Lucas Domiciano
29/05/2018
Acha que seria melhor fazer na linguagem delphi mesmo , esse tratamento , sem usar uma tabela fixa ?
GOSTEI 0
Lucas Domiciano
29/05/2018
Score ( cod_score, data, score, descricao, cod_aluno, dias )
Pontuacao(
cod_pontuacao,
descricao,
score_inicial,
score_final,
dias_inicial ,
dias_final
)
Esses são os campos das tabelas Score e Pontuacao . Tabela Pontuacao é onde eu deixe pré determinado quem é nivel medio , elevada , rebaixada . exemplo
Pontuacao : 1 , MUITO REBAIXADA , 0 , 5 , 365 , 730
Pontuacao : 2 , REBAIXADA , 6 , 18 , 365 , 730
Pontuacao : 2 , MEDIO , 19 , 25 , 365 , 730
Score : 1, 30/05/2018 , 3 , MUITO REBAIXADA , 2 , 650. Esse MUITO REBAIXADA eu tenho que verificar a tabela pontuacao e colocar na tabela Score
GOSTEI 0
Lucas Domiciano
29/05/2018
Corrigindo *Esses são os campos das tabelas Score e Pontuacao . Tabela Pontuacao é onde eu deixe pré determinado quem é nivel medio , elevada , rebaixada . exemplo
Pontuacao : 1 , MUITO REBAIXADA , 0 , 5 , 365 , 730
Pontuacao : 2 , REBAIXADA , 6 , 18 , 365 , 730
Pontuacao : 3 , MEDIO , 19 , 25 , 365 , 730
Score : 1, 30/05/2018 , 3 , MUITO REBAIXADA , 2 , 650. Esse MUITO REBAIXADA eu tenho que verificar a tabela Pontuacao e colocar na tabela Score
Pontuacao : 1 , MUITO REBAIXADA , 0 , 5 , 365 , 730
Pontuacao : 2 , REBAIXADA , 6 , 18 , 365 , 730
Pontuacao : 3 , MEDIO , 19 , 25 , 365 , 730
Score : 1, 30/05/2018 , 3 , MUITO REBAIXADA , 2 , 650. Esse MUITO REBAIXADA eu tenho que verificar a tabela Pontuacao e colocar na tabela Score
GOSTEI 0
Lucas Domiciano
29/05/2018
Vocês acham que devo fazer esse controle por classes , ao invès do banco ?
GOSTEI 0
Lucas Domiciano
29/05/2018
CONSEGUI RESOLVER !!! OBRIGADO !!!
GOSTEI 0