これはあなたの質問です:
select en.*,
(select sf.red, sf.blue, sf.green, sf.yellow from data2 sf )
from data1 en;
select
のサブクエリ このように使用されるのは、スカラーサブクエリと呼ばれます。 。このようなサブクエリは、スカラー値(つまり、数値や文字列などの単一の値)を使用できる場合に使用できます。
スカラーサブクエリは、次の2つの条件を満たす必要があります。
- 最大で1行を返します。
- 1つの列を返します。
あなたの場合の解決策は、LEFT JOIN
を使用する簡単です。 :
select en.*, sf.red, sf.blue, sf.green, sf.yellow
from data1 en left join
data2 sf
on 1=1;
または、Oracle 12Cでは、横方向の結合を使用できます。
select en.*, sf.red, sf.blue, sf.green, sf.yellow
from data1 en left join lateral
data2 sf
on 1=1;
この場合、2つは同じように見えますが、相関サブクエリに横方向結合を使用することもできます。