Ini pertanyaan Anda:
select en.*,
(select sf.red, sf.blue, sf.green, sf.yellow from data2 sf )
from data1 en;
Sebuah subquery di select
digunakan seperti ini disebut subquery skalar . Subquery seperti itu dapat digunakan di mana nilai skalar (yaitu nilai tunggal seperti angka atau string) dapat digunakan.
Subquery skalar harus memenuhi dua kondisi:
- Ini mengembalikan paling banyak satu baris.
- Ini mengembalikan satu kolom.
Solusi dalam kasus Anda sederhana, menggunakan LEFT JOIN
:
select en.*, sf.red, sf.blue, sf.green, sf.yellow
from data1 en left join
data2 sf
on 1=1;
Atau, di Oracle 12C, Anda dapat menggunakan gabungan lateral:
select en.*, sf.red, sf.blue, sf.green, sf.yellow
from data1 en left join lateral
data2 sf
on 1=1;
Keduanya terlihat sama dalam kasus ini, tetapi gabungan lateral juga dapat digunakan untuk subkueri yang berkorelasi.