あなたはそれをより簡単な方法で解決することができます:
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;
フィドル
注:「-」として表示されるnull値は単なる出力フォーマットであると想定しています。そうでない場合は、NULLを使用した出力を「-」に変換できます。
注2:Laravel/PHPコードに変換する方法がわかりません。もっと良いアイデアがあればいいのですが。