কম্পিউটার টিউটোরিয়াল

SQL Subquery: নেস্টেড কোয়েরির সম্পূর্ণ গাইড

একটি SQL সাবকোয়েরি হলো অন্য একটি কোয়েরির ভিতরের কোয়েরি। এটি একটি SQL স্টেটমেন্টের WHERE বা HAVING ক্লজে ব্যবহৃত হয়। সাবকোয়েরি আপনাকে এক কোয়েরির ফলাফল অন্য কোয়েরিতে আর্গুমেন্ট হিসেবে ব্যবহার করতে দেয়।

যখন আপনি একটি SQL কোয়েরি লিখেন, তখন আপনি অন্য একটি কোয়েরির ফলাফলের ভিত্তিতে একটি প্যারামিটার নির্দিষ্ট করতে চাইতে পারেন। উদাহরণস্বরূপ, আপনার একটি গ্রাহক তালিকা আছে। আপনি এমন গ্রাহকদের তালিকা চান যারা একটি নির্দিষ্ট পরিমানের বেশি মুল্যের অর্ডার দিয়েছে। অর্ডার এবং গ্রাহকের তথ্য আলাদা টেবিলে সংরক্ষিত।

এখানেই SQL সাবকোয়েরি অপারেশন কাজে লাগে। সাবকোয়েরিগুলো, যাদের নেস্টেড কোয়েরিও বলা হয়, অন্য একটি SQL কোয়েরির WHERE ক্লজের ভিতরে থাকা SELECT কোয়েরি। মূল SQL কোয়েরি সাবকোয়েরির ফলাফল ব্যবহার করে।

এই টিউটোরিয়ালে আমরা কিছু উদাহরণের সাথে SQL-এ সাবকোয়েরি কীভাবে ব্যবহার করতে হয় সেটি আলোচনা করব।

SQL Subquery: একটি গাইড

একটি SQL সাবকোয়েরি হলো অন্য একটি কোয়েরির ভিতরের কোয়েরি। এগুলো এমন কোয়েরি চালাতে ব্যবহৃত হয় যা অন্য একটি কোয়েরির ফলাফলের ওপর নির্ভরশীল। সাবকোয়েরি আপনাকে দুটি আলাদা কোয়েরি লিখে ফলাফল কপি-পেস্ট করা ছাড়া এই কাজ করতে দেয়। সাবকোয়েরি WHERE বা HAVING ক্লজে প্রদর্শিত হয়।

এখানে একটি SQL SELECT স্টেটমেন্টে সাবকোয়েরির সিনট্যাক্স:

SELECT name FROM products WHERE supplier_id IN (SELECT id FROM suppliers WHERE local = True);

এই কোয়েরি স্থানীয় কোম্পানির দ্বারা সরবরাহকৃত সকল পণ্যের নাম সিলেক্ট করে। আমরা SQL IN স্টেটমেন্টে ইনপুট হিসেবে একটি সাবকোয়েরি ব্যবহার করি। SQL IN স্টেটমেন্ট "products" টেবিল থেকে সকল রেকর্ড ফেরত দেয় যেখানে supplier_id আমাদের সাবকোয়েরির ফলাফলে থাকে।

আমরা INSERT, UPDATE, এবং DELETE স্টেটমেন্টে সাবকোয়েরি ব্যবহার করতে পারি।

একটি সাবকোয়েরি অবশ্যই প্যারেনথেসিসে থাকতে হবে। এটি একটি সাবকোয়েরির ভিতর আরেকটি সাবকোয়েরির সাথে পার্থক্য করে।

আপনাকে নিশ্চিত করতে হবে আপনার সাবকোয়েরিতে প্রাসঙ্গিক ডেটা সিলেক্ট করেছেন। আমাদের উপরের সাবকোয়েরিতে, আমরা suppliers টেবিল থেকে id সিলেক্ট করেছি। যদি আমরা অন্য কোনো কলাম সিলেক্ট করতাম, তবে আমাদের কোয়েরি কাজ করত না। কারণ আমাদের মূল কোয়েরি supplier ID-এর ওপর নির্ভরশীল।

SQL Subquery উদাহরণ: SELECT

যদি আপনি অনার রোলের ছাত্রদের তালিকা চান, তবে আপনি একটি সাবকোয়েরি ব্যবহার করতে পারেন। এটি অনুমান করে অনার রোলের তথ্য অন্য একটি টেবিলে আছে।

চলুন একটি উদাহরণ দিয়ে বুঝি SQL সাবকোয়েরি কীভাবে কাজ করে। নিচের কোয়েরি ২০০ ডলারের বেশি মুল্যের অর্ডার দিয়ে থাকা সকল গ্রাহকের তালিকা ফেরত দেবে:

SELECT * FROM customers WHERE id IN (SELECT DISTINCT customer_id FROM orders WHERE cost > 200);

আমাদের সাবকোয়েরি নিচের ফলাফল ফেরত দেয়:

name email address loyalty_plan id
Katy katy.l@gmail.com Mountain View, CA None 4
John john.p@outlook.com Boston, MA None 1

(২ সারি)

প্রথম লাইনে, আমরা আমাদের customers টেবিল থেকে সকল কলাম সিলেক্ট করি। তারপর, আমরা নির্দিষ্ট করি আমরা শুধু সেই গ্রাহকদের চাই যাদের কাস্টমার ID একটি সাবকোয়েরি-তে আছে। আমাদের সাবকোয়েরি আমাদের orders টেবিল থেকে সকল ইউনিক কাস্টমার ID সিলেক্ট করে যেখানে আইটেমের খরচ ২০০ ডলারের বেশি। এই শর্ত পূরণকারী রেকর্ডগুলো ফলাফলে অন্তর্ভুক্ত হয়।

SQL Subquery: INSERT

আমরা ২০০ ডলারের বেশি মুল্যের خرید করছা সকল গ্রাহকের রেকর্ড high_value_customers নামক একটি টেবিলে ইনসার্ট করতে চাই। সেজন্য আমরা একটি SQL সাবকোয়েরি এবং SQL INSERT কমান্ড ব্যবহার করতে পারি:

INSERT INTO high_value_customers SELECT * FROM customers WHERE id IN (SELECT DISTINCT customer_id FROM orders WHERE cost > 200);

যদি আমরা আমাদের high_value_customers টেবিল কোয়েরি করি, তবে আমরা আমাদের সকল হাই ভ্যালু কাস্টমার এক টেবিলে দেখতে পাব:

name email address loyalty_plan id
Katy katy.l@gmail.com Mountain View, CA Gold 4
John john.p@outlook.com Boston, MA None 1

(২ সারি)

SQL Subquery: UPDATE

আমরা একটি টেবিলের ভিতরের ডেটা আপডেট করতে সাবকোয়েরি ব্যবহার করতে পারি। উদাহরণস্বরূপ, ধরুন আমরা হাই-ভ্যালু পার্চেস করছা সকল গ্রাহকের লয়ালটি প্ল্যান Bronze-এ আপডেট করতে চাই। আমরা নিচের কোয়েরি ব্যবহার করে এই অপারেশন পারফর্ম করতে পারি:

UPDATE customers SET loyalty_plan = 'High Value' WHERE id IN (SELECT DISTINCT customer_id FROM orders WHERE cost > 200);

যখন আমরা আমাদের customers টেবিল কোয়েরি করি, তবে দেখতে পাই আমাদের দুজন হাই ভ্যালু কাস্টমারের লয়ালটি প্ল্যান আপডেট হয়েছে:

name email address loyalty_plan id
Katy katy.l@gmail.com Mountain View, CA High Value 4
John john.p@outlook.com Boston, MA High Value 1

(২ সারি)

SQL Subquery: DELETE

আপনি SQL DELETE স্টেটমেন্টসহ সাবকোয়েরি ব্যবহার করে একটি টেবিলে একটি বা একাধিক সারি ডিলিট করতে পারেন।

চলুন একটি কমান্ড লিখি যা হাই ভ্যালু কাস্টমারদের অর্ডার ডিলিট করে, যাদের আমরা ডেটাবেসে একটি নতুন টেবিলে সরিয়ে ফেলেছি। এজন্য আমাদের একটি সাবকোয়েরির ওপর নির্ভর করতে হবে:

DELETE FROM orders WHERE customer_id IN (SELECT id FROM customers WHERE loyalty_plan = 'High Value');

আমরা দেখতে পাচ্ছি আমাদের হাই ভ্যালু কাস্টমারদের সকল অর্ডার ডিলিট হয়েছে। আমাদের নেস্টেড সাবকোয়েরি নিচের ফলাফল ফেরত দেয়:

id item_name cost customer_id
5 Oak Chair 100 3

(১ সারি)

উপসংহার

একটি SQL সাবকোয়েরি হলো অন্য একটি কোয়েরির ভিতরের কোয়েরি। সাবকোয়েরি আপনাকে এক কোয়েরির ফলাফল অন্য কোয়ারীতে ব্যবহার করতে দেয়। সাবকোয়েরি একটি SQL স্টেটমেন্টের HAVING বা WHERE ক্লজে নির্দিষ্ট করা হয়।

সাবকোয়েরি এক কোয়েরি যা অন্য কোয়েরির ফলাফলের ওপর নির্ভরশীল, সেটি চালানো সহজ করে দেয়। এই গাইডে আমরা SQL সার্ভারে সাবকোয়েরি কীভাবে লিখতে হয় সেটি আলোচনা করেছি। আমরা SELECT, INSERT, UPDATE, এবং DELETE SQL স্টেটমেন্টে সাবকোয়েরি কীভাবে ব্যবহার করতে হয় সেটিও আলোচনা করেছি।

আপনি কি SQL-এ কোডিং শিখতে চান? আমাদের How to Learn SQL গাইড দেখুন। এই গাইডে SQL শিখতে এক্সপার্ট পরামর্শ আছে। আপনি শিখতে সাহায্য করার জন্য শীর্ষ কোর্সের তালিকাও পাবেন।

  1. Rhythmbox-এর সম্পূর্ণ গাইড

  2. ভিন্ডোজ ১০-এ মাউস সেটিংসের সম্পূর্ণ গাইড

  3. ফোর্টনাইট সিস্টেম রিকোয়ারমেন্টের সম্পূর্ণ গাইড

  4. ফিটবিট পে মাস্টার করুন: সম্পূর্ণ ব্যবহারকারী গাইড