Toto je váš dotaz:
select en.*,
(select sf.red, sf.blue, sf.green, sf.yellow from data2 sf )
from data1 en;
Dílčí dotaz v select
takto použitý se nazývá skalární dílčí dotaz . Takový dílčí dotaz lze použít tam, kde lze použít skalární hodnotu (tj. jednu hodnotu, jako je číslo nebo řetězec).
Skalární poddotazy musí splňovat dvě podmínky:
- Vrátí maximálně jeden řádek.
- Vrátí jeden sloupec.
Řešení ve vašem případě je jednoduché, pomocí LEFT JOIN
:
select en.*, sf.red, sf.blue, sf.green, sf.yellow
from data1 en left join
data2 sf
on 1=1;
Nebo v Oracle 12C můžete použít boční spojení:
select en.*, sf.red, sf.blue, sf.green, sf.yellow
from data1 en left join lateral
data2 sf
on 1=1;
Oba vypadají v tomto případě stejně, ale pro korelovaný dílčí dotaz lze také použít boční spojení.