Fórum Function no Mysql #595209
30/06/2018
0
Perguntinha de Iniciante, rsrsrsrs,
Na criação de
Desde já agradeço.
Dirceu Morais
Curtir tópico
+ 0Posts
30/06/2018
Raimundo Pereira
Gostei + 0
30/06/2018
Raimundo Pereira
Gostei + 0
19/07/2018
Dirceu Morais
create or alter procedure fn_viagens
( idata date,
ilinha integer)
returns (
qviagem integer)
as
--Faço a declaração da minhas variaveis
declare variable line integer;
declare variable processou boolean;
declare variable tempo integer;
declare variable km integer;
declare variable ponto varchar(10);
declare variable id_ integer;
begin
--Atribuo valores as variaveis
line = 1;
Processou = False;
qviagem = 0;
/* Percorrer o cadastro de viagem */
For select viagem_id, km, tempo, pontos from meia_viagem v
WHERE v.data = :idata and v.linha = ilinha
into :id, :km, :tempo, :pontos
do Begin
If line = 1 Then
Begin
if (km > 0) and (tempo > 2) Then
Begin
qViagem := qViagem + 1;
Processou := True;
end
end
Else
begin
if id_ = 1 Then
Begin
if (km > 0) Then
Begin
if ((pontos = 'PT1 - PT1') and
(tempo > '00:02:00'))
or (pontos <> 'PT1 - PT1') Then
Begin
qviagem := qviagem + 1;
Processou := True;
end;
end;
end
Else if Not Processou and (km> > 0) and (tempo > 2) Then
Begin
qviagem := qviagem + 1;
Processou := True;
end;
Ponto := pontos;
end;
line = line + 1;
end;
end
Essa função me retorna a quantidade de viagem realizadas, mas para considerar uma viagem, o tempo tem que ser maior que 2 e id = 1 ou
id > 2
Como eu faço essa mesma função no Mysql?
Gostei + 0
19/07/2018
Dirceu Morais
Talvez não seja necessário fazer uma Function.
Vamos ao problema:
Tenho um bloco viagens, onde é registrado o tempo de cada ponto.
Se o tempo total do bloco for menor que 5:00minutos é porque não foi realizado a viagem.
Minha tabela é mais ou menos assim:
|viagem_id|carro|data |linha|pontos |inicio**|**fim***|tempo***|bloco| | 1|74039|2018-05-02|4148 |PT1 - PT2|11:29:28|11:29:38|00:00:10| 648| | 2|74039|2018-05-02|4148 |PT2 - PT1|11:37:40|12:17:30|00:39:50| 648| | 3|74039|2018-05-02|4148 |PT1 - PT2|12:18:14|13:02:12|00:43:58| 648| | 1|80021|2018-05-02|4148 |PT1 - PT2|17:02:48|17:03:00|00:00:12| 792| | 2|80021|2018-05-02|4148 |PT2 - PT1|17:04:18|17:39:18|00:35:00| 792| | 3|80021|2018-05-02|4148 |PT1 - PT2|17:40:02|18:24:40|00:44:38| 792| | 4|80021|2018-05-02|4148 |PT2 - PT2|18:25:56|18:25:56|00:00:00| 792|
Neste exemplo eu teria 2 viagens.
Deu um branco
Socorro.
Gostei + 0
20/07/2018
Dirceu Morais
Com relação a criação da função no mysql continuo "apanhando", mas pelo menos consegui fazer a instrução no sql sem a necessidade da função.
Para quem precisar, vai ai a solução:
select Count(distinct Bloco) from meia_viagem v WHERE v.data = :Data and v.linha = :Linha and v.tempo > '00:05:00'
Ou seja, eu usei o count(Distinct...) ao invés de usar count(*)
Brigadú
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)