Esta es su consulta:
select en.*,
(select sf.red, sf.blue, sf.green, sf.yellow from data2 sf )
from data1 en;
Una subconsulta en select
usado así se llama una subconsulta escalar . Dicha subconsulta se puede usar donde se puede usar un valor escalar (es decir, un valor único como un número o una cadena).
Las subconsultas escalares deben cumplir dos condiciones:
- Devuelve como máximo una fila.
- Devuelve una columna.
La solución en su caso es simple, usando un LEFT JOIN
:
select en.*, sf.red, sf.blue, sf.green, sf.yellow
from data1 en left join
data2 sf
on 1=1;
O, en Oracle 12C, puede usar una unión lateral:
select en.*, sf.red, sf.blue, sf.green, sf.yellow
from data1 en left join lateral
data2 sf
on 1=1;
Los dos tienen el mismo aspecto en este caso, pero también se puede usar una unión lateral para una subconsulta correlacionada.