Това е вашето запитване:
select en.*,
(select sf.red, sf.blue, sf.green, sf.yellow from data2 sf )
from data1 en;
Подзаявка в select
използвано по този начин се нарича скаларна подзаявка . Такава подзаявка може да се използва, когато може да се използва скаларна стойност (т.е. единична стойност като число или низ).
Скаларните подзаявки трябва да отговарят на две условия:
- Връща най-много един ред.
- Връща една колона.
Решението във вашия случай е просто, използвайки 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;
Двете изглеждат еднакви в този случай, но странично свързване може да се използва и за корелирана подзаявка.