ক্যোরিয়াম সিন্টেক্সিকভাবে এসকিউএল সঠিক হয়েছে এমনকি কলাম table_b
না থাকলেও name
। কারণ স্কোপ রেজুলেশন।
কোয়েরিটি বিশ্লেষণ করা হলে, প্রথমে এটি পরীক্ষা করা হয় যে কলাম table_b
আছে কিনা name
। যেহেতু এটি হয় না, তারপরে table_a
চেক করা হয়। টেবিলের কোনওটিতেই name
কলাম না থাকলে এটি ত্রুটি ফেলবে ।
অবশেষে ক্যোয়ারীটি এই হিসাবে কার্যকর করা হয়েছে:
select a.*
from table_a a
where a.name in (select a.name
from table_b b
);
ফলাফলগুলি হিসাবে কোয়েরিটি প্রতিটি সারির জন্য দেবে table_a
, সাবকিউরি (select name from table_b)
- বা (select a.name from table_b b)
- একই a.name
মান এবং একাধিক সারি সহ একক কলাম সহ একটি টেবিল table_b
। সুতরাং, যদি table_b
1 বা ততোধিক সারি থাকে তবে ক্যোয়ারীটি এইভাবে চলে:
select a.*
from table_a a
where a.name in (a.name, a.name, ..., a.name) ;
বা:
select a.*
from table_a a
where a.name = a.name ;
বা:
select a.*
from table_a a
where a.name is not null ;
যদি table_b
খালি থাকে তবে কোয়েরিটি কোনও সারি ফেরত দেবে না (এই সম্ভাবনাটি দেখানোর জন্য @ উঘাইকে থ্যাঙ্কস)।
এটি (আপনি কোনও ত্রুটি না পেয়েছেন) সম্ভবত সর্বোত্তম কারণ হ'ল সমস্ত কলামের রেফারেন্সটি সারণির নাম / উপনামের সাথে উপসর্গ করা উচিত। যদি প্রশ্নটি ছিল:
select a.* from table_a where a.name in (select b.name from table_b);
আপনি সরাসরি ত্রুটি পেয়েছে। যখন সারণি উপসর্গগুলি বাদ দেওয়া হয়, বিশেষত আরও জটিল প্রশ্নগুলিতে এবং এর চেয়েও গুরুত্বপূর্ণ, এ জাতীয় ভুল হওয়া খুব কঠিন নয় happen
এছাড়াও পড়ুন স্ট্যাটিক এসকিউএল স্টেটমেন্ট থাকা নামগুলি রেজোলিউশন: ওরাকল ডক্স অনুরূপ উদাহরণ বি-6 ইনার ক্যাপচার করুন এবং সুপারিশ মধ্যে নির্বাচন করুন এবং DML বিবৃতি এড়ানো ইনার ক্যাপচার অনুচ্ছেদ:
যথাযথ টেবিল উপন্যাস সহ বিবৃতিতে প্রতিটি কলাম রেফারেন্স যোগ্য করুন ify