यह आपकी क्वेरी है:
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;
इस मामले में दोनों एक जैसे दिखते हैं, लेकिन एक लेटरल जॉइन का उपयोग सहसंबद्ध सबक्वेरी के लिए भी किया जा सकता है।