Home > OS >  MySQL query calculated field
MySQL query calculated field

Time:03-13

I would like to do this query to include the null result in another calculated field.

SELECT ft.fecha_inicio, 
       ft.fecha_fin, 
       IF(ft.fecha_fin is NULL, now(), ft.fecha_fin) fin, 
       TIMEDIFF(fin,ft.fecha_inicio) total,
       IF (ISNULL(ft.fecha_fin), 1, 0) as encurso
FROM fabricaciones_tiempos ft
WHERE ft.id_fabricacion = 138;

is this possible?

enter image description here

CodePudding user response:

You cannot directly use a calculated column as part of another column calculation, but you can do it like this:

SELECT 
  fecha_inicio,
  fecha_fin,
  TIMEDIFF(fin,fecha_inicio) total,
  encurso
FROM (
  SELECT ft.fecha_inicio, 
       ft.fecha_fin, 
       IF(ft.fecha_fin is NULL, now(), ft.fecha_fin) fin, 
       IF (ISNULL(ft.fecha_fin), 1, 0) as encurso
 FROM fabricaciones_tiempos ft
 WHERE ft.id_fabricacion = 138
) as q;

CodePudding user response:

You can't use the alias but you can either include the original formula in place or assign the value to a variable....

SELECT ft.fecha_inicio, 
       ft.fecha_fin, 
       IF(ft.fecha_fin is NULL, now(), ft.fecha_fin) fin, 
       TIMEDIFF(IF(ft.fecha_fin is NULL, now(), ft.fecha_fin),ft.fecha_inicio) total,
       IF (ISNULL(ft.fecha_fin), 1, 0) as encurso
FROM fabricaciones_tiempos ft
WHERE ft.id_fabricacion = 138;

or....

SELECT ft.fecha_inicio, 
       ft.fecha_fin, 
       @fin:=IF(ft.fecha_fin is NULL, now(), ft.fecha_fin), 
       TIMEDIFF(@fin,ft.fecha_inicio) total,
       IF (ISNULL(ft.fecha_fin), 1, 0) as encurso
FROM fabricaciones_tiempos ft
WHERE ft.id_fabricacion = 138;
  • Related