Subquery এবং Nested Query হল SQL কুয়েরি গঠনের দুইটি গুরুত্বপূর্ণ অংশ, যেগুলি একে অপরের মধ্যে থাকে। এগুলি মূলত মূল কুয়েরি (Outer Query) এর ভিতরে অন্য একটি কুয়েরি (Inner Query) ব্যবহার করে ডেটাবেজ থেকে আরও জটিল ফলাফল বের করার জন্য ব্যবহৃত হয়।
Subquery এবং Nested Query একই ধারণার মধ্যে পড়ে, তবে কিছু পার্থক্য রয়েছে। Subquery সাধারণত একক কুয়েরি হিসেবে বাহিরে থাকে, যখন Nested Query একাধিক স্তরে কুয়েরি পরিচালনা করে। এই টিউটোরিয়ালে আমরা Subquery এবং Nested Query এর মধ্যে পার্থক্য, তাদের ব্যবহার এবং উদাহরণ নিয়ে আলোচনা করব।
Subquery হল একটি কুয়েরি যা অন্য একটি কুয়েরির ভিতরে থাকে। এটি মূল কুয়েরি (Outer Query) এর সাথে সম্পর্কিত ডেটা নির্বাচন করতে ব্যবহৃত হয়। Subquery সাধারণত SELECT, INSERT, UPDATE, বা DELETE কুয়েরির অংশ হিসেবে ব্যবহৃত হতে পারে এবং এটি একক বা একাধিক রেকর্ড ফিরিয়ে দিতে পারে।
SELECT column_name
FROM table_name
WHERE column_name = (SELECT column_name FROM table_name WHERE condition);
এখানে, inner (sub) query প্রথমে চালানো হয় এবং তার আউটপুট মূল query এর জন্য একটি মান প্রদান করে।
ধরা যাক, আমাদের একটি students
টেবিল আছে এবং আমরা এমন ছাত্রদের নাম দেখতে চাই, যাদের গ্রেড 'A'।
SELECT name
FROM students
WHERE grade = (SELECT grade FROM students WHERE id = 1);
এখানে, inner query প্রথমে id = 1
এর জন্য গ্রেড বের করবে এবং তারপর outer query সেই গ্রেডের জন্য ছাত্রদের নাম প্রদর্শন করবে।
IN
অথবা ANY
ব্যবহার করা হয়।Nested Query হল একাধিক স্তরের Subqueries-এর ব্যবহার। এটি একটি কুয়েরির মধ্যে অন্য কুয়েরি ব্যবহার করে, যা আরও জটিল ফলাফল প্রদান করতে সহায়ক। Nested query সাধারণত Subqueries এর মধ্যে ব্যবহার করা হয়, যেখানে একাধিক স্তরের কুয়েরি থাকে।
SELECT column_name
FROM table_name
WHERE column_name = (SELECT column_name FROM table_name WHERE column_name = (SELECT column_name FROM table_name));
এই কুয়েরিতে একটি কুয়েরির ভিতরে অন্য একটি কুয়েরি রয়েছে এবং এটি পুনরাবৃত্তি হতে পারে।
ধরা যাক, আমরা এমন ছাত্রদের নাম দেখতে চাই, যাদের গ্রেড 'A' এবং তাদের বয়স 20 বছরের বেশি।
SELECT name
FROM students
WHERE grade = (SELECT grade FROM students WHERE age > 20 AND grade = 'A');
এখানে, inner subquery প্রথমে age > 20
এবং grade = 'A'
শর্ত পূর্ণ করে, এবং তার পরে Outer Query সেই গ্রেডের ছাত্রদের নাম বের করবে।
এখানে একটি উদাহরণ যেখানে একাধিক Nested Query ব্যবহার করা হয়েছে:
SELECT name
FROM students
WHERE id IN (
SELECT id
FROM students
WHERE age > 20
AND id IN (
SELECT id
FROM students
WHERE grade = 'A'
)
);
এখানে, তিনটি স্তরের Subquery রয়েছে:
id
বের করছে যারা বয়স ২০ এর বেশি।id
বের করছে যারা গ্রেড 'A' পেয়েছে।id
গুলোর জন্য ছাত্রদের নাম প্রদর্শন করছে।বৈশিষ্ট্য | Subquery | Nested Query |
---|---|---|
সংজ্ঞা | একটি কুয়েরি যা অন্য একটি কুয়েরির ভিতরে থাকে। | একাধিক কুয়েরি যার মধ্যে একাধিক Subqueries থাকে। |
ব্যবহার | সাধারণত একটি মান রিটার্ন করতে ব্যবহৃত হয়। | একাধিক স্তরের কুয়েরি একসাথে কাজ করতে ব্যবহৃত হয়। |
কুয়েরির স্তর | একক স্তরের কুয়েরি | একাধিক স্তরের কুয়েরি |
টিপ | IN , = , বা ANY এর মতো operators এর সাথে ব্যবহার করা হয়। | একাধিক Subquery সংযুক্ত করা হয়। |
ধরা যাক, আমরা এমন ছাত্রদের তালিকা দেখতে চাই যারা ৪০% বা তার বেশি মার্ক পেয়েছে এবং তাদের গ্রেড 'A'। প্রথমে, আমাদের সর্বোচ্চ মার্কের জন্য একটি Subquery ব্যবহার করতে হবে।
SELECT name
FROM students
WHERE marks >= (SELECT MAX(marks) FROM students)
AND grade = 'A';
এখানে, প্রথম Subquery সর্বোচ্চ মার্কের মান বের করে, এবং outer query সেই মানের তুলনায় ছাত্রদের marks
এবং grade
যাচাই করে।
Subquery এবং Nested Query SQL কুয়েরি অপারেশনগুলির মধ্যে অত্যন্ত শক্তিশালী এবং কার্যকরী উপাদান। Subquery একক মান রিটার্ন করতে ব্যবহৃত হয়, যখন Nested Query একাধিক স্তরের কুয়েরি একত্রে ব্যবহারের জন্য ব্যবহৃত হয়। এগুলি জটিল কুয়েরি এবং ডেটাবেজ অপারেশনে বিশেষভাবে কার্যকরী, যা ডেটার গুণগত মান এবং কার্যক্ষমতা বাড়ানোর জন্য ব্যবহৃত হয়।
common.read_more