Vous pouvez le résoudre plus facilement :
select ts recordtime, max(to1) tempout, max(to2) tempoutstamb, max(to3) tempoutstamb2
from (
select ts, tempout to1, cast (null as numeric(10,1)) to2, cast (null as numeric(10,1)) to3
from table1
union all
select ts, null, tempout, null
from table2
union all
select ts, null, null, tempout
from table3
) tt
group by ts
order by ts;
Vous pouvez le trouver dans le violon https://www.db-fiddle.com/f /eJsPZijRnQFGXugLGHnn93/0
REMARQUE :J'ai supposé que les valeurs nulles affichées sous la forme '-' ne sont que le formatage de sortie. Si ce n'est pas le cas, la sortie avec NULL peut être convertie en '-'.
NOTE2 :Je ne sais pas comment convertir en code Laravel/PHP, j'espère que vous auriez une meilleure idée.