Oto Twoje zapytanie:
select en.*,
(select sf.red, sf.blue, sf.green, sf.yellow from data2 sf )
from data1 en;
Podzapytanie w select
używane w ten sposób nazywa się podzapytanie skalarne . Takie podzapytanie może być użyte tam, gdzie można użyć wartości skalarnej (tj. pojedynczej wartości, takiej jak liczba lub łańcuch).
Podzapytania skalarne muszą spełniać dwa warunki:
- Zwraca co najwyżej jeden wiersz.
- Zwraca jedną kolumnę.
Rozwiązanie w Twoim przypadku jest proste, używając LEFT JOIN
:
select en.*, sf.red, sf.blue, sf.green, sf.yellow
from data1 en left join
data2 sf
on 1=1;
Lub w Oracle 12C możesz użyć sprzężenia bocznego:
select en.*, sf.red, sf.blue, sf.green, sf.yellow
from data1 en left join lateral
data2 sf
on 1=1;
Oba wyglądają tak samo w tym przypadku, ale łączenie boczne może być również użyte dla skorelowanego podzapytania.