Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

JoaoVM

Vista com Campo por Defeito

Recommended Posts

Boas malta,
Tenho um problema, tenho umas vista que me devolve um valor no campo soma_in e só mais tarde atualiza o campo da soma_out, mas enquanto não não é atualizado esse valor fica a NULL e o meu objetivo é que fique a 00:00:00, alguém sabe como posso fazer?Basicamente quero definir o meu campo tempo_out como um campo com valor por defeito. É possível fazer isso numa vista?

3iq7.png

CREATE OR REPLACE VIEW PERIODO_5 AS
SELECT sec_to_time(sum(time_to_sec(E.P5))) AS tempo_in,
(SELECT sec_to_time(sum(time_to_sec(S.P5)))
        FROM transacoes_bmw AS S
        WHERE S.evento = 'S'
                AND S.data = timestamp(current_date())) AS tempo_out
FROM transacoes_bmw AS E
WHERE E.evento = 'E'
       AND E.data = timestamp(current_date())
GROUP BY E.data;

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não amigo sou português de Portugal :natalbiggrin:

 

Não estou a perceber como poderia usar aqui..podes ser mais especifico?

 

Imagina, esta vista vai fazer a soma de tempos totais de entradas..se 3 empregados entraram numa linha de produção então o tempo_in é 03:00:00, mas se ainda não saíram o tempo deveria ser 00:00:00 e em vez disso ele retorna NULL.

depois quando faço a diferença entre o (tempo_in - tempo_out) não me devolve as 03:00:00, devolve 0.



Já consegui,

O segredo era colocar antes do campo no select IFNULL( CAMPO, (valor por defeito)) as ....

Ficou assim:

 

CREATE OR REPLACE VIEW T_PERIODO_9 AS
SELECT IFNULL(sec_to_time(sum(time_to_sec(E.P9))),'00:00:00') AS tempo_in,
(SELECT IFNULL(sec_to_time(sum(time_to_sec(S.P9))),'00:00:00')
                FROM transacoes_bmw AS S
                WHERE S.evento = 'S'
                AND S.data = timestamp(current_date())) AS tempo_out
FROM transacoes_bmw AS E
WHERE E.evento = 'E'
AND E.data = timestamp(current_date())
GROUP BY E.data;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe, estranhei o "vista" , o "defeito".

 

Em Portugal se preserva mais a língua, aqui temos uma tendência a usar a terminologia do Tio Sam ...

 

COALESCE ou ISNULL acho que tem o mesmo efeito.

 

Mas, se revolveu deixa quieto ... :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.