একটি এসকিউএল সাবকোয়েরি হল অন্য একটি কোয়েরির মধ্যে একটি প্রশ্ন। এটি একটি SQL স্টেটমেন্টের WHERE বা HAVING clause-এ ব্যবহৃত হয়। সাবকোয়ারিগুলি আপনাকে একটি প্রশ্নের ফলাফলকে অন্য একটি প্রশ্নের যুক্তি হিসাবে নির্দিষ্ট করতে দেয়৷
আপনি যখন একটি SQL লিখছেন query, আপনি অন্য প্রশ্নের ফলাফলের উপর ভিত্তি করে একটি প্যারামিটার নির্দিষ্ট করতে চাইতে পারেন। উদাহরণস্বরূপ, বলুন আপনার গ্রাহকদের একটি তালিকা আছে। আপনি এমন গ্রাহকদের একটি তালিকা পেতে চাইতে পারেন যারা একটি নির্দিষ্ট পরিমাণের বেশি মূল্যের অর্ডার দিয়েছেন। অর্ডার এবং গ্রাহকের তথ্য একটি ভিন্ন টেবিলের মধ্যে সংরক্ষণ করা হয়।
সেখানেই SQL সাবকোয়েরি অপারেশন আসে। সাবকোয়েরি , নেস্টেড কোয়েরি নামেও পরিচিত, হল SELECT WHERE-এর মধ্যে প্রশ্ন অন্য SQL এর ধারা প্রশ্ন. প্রধান SQL ক্যোয়ারী তারপর সাবকোয়েরির ফলাফল ব্যবহার করে।
এই টিউটোরিয়ালে, আমরা আলোচনা করতে যাচ্ছি কিভাবে SQL-এ সাবকোয়ারি ব্যবহার করতে হয়, কয়েকটি উদাহরণের সাথে।
SQL সাবকোয়েরি:একটি নির্দেশিকা
একটি এসকিউএল সাবকোয়েরি হল অন্য কোয়েরির মধ্যে একটি কোয়েরি। এগুলি একটি কোয়েরি চালানোর জন্য ব্যবহৃত হয় যা অন্য প্রশ্নের ফলাফলের উপর নির্ভর করে। সাবকোয়ারিগুলি আপনাকে দুটি পৃথক প্রশ্ন লিখতে এবং ফলাফলগুলি কপি-পেস্ট না করে এটি করতে দেয়৷ সাবকোয়ারি একটি WHERE বা HAVING ক্লজে উপস্থিত হয়৷
৷এখানে একটি এসকিউএল সিলেক্ট স্টেটমেন্টে একটি সাবকোয়েরির সিনট্যাক্স রয়েছে:
SELECT name FROM products WHERE supplier_id IN (SELECT id FROM suppliers WHERE local = True);
এই ক্যোয়ারীটি একটি স্থানীয় কোম্পানীর দ্বারা সরবরাহকৃত সমস্ত পণ্যের নাম নির্বাচন করে৷ আমরা SQL IN স্টেটমেন্টে একটি ইনপুট হিসাবে একটি সাবকোয়েরি ব্যবহার করি। SQL IN স্টেটমেন্ট "পণ্য" টেবিল থেকে সমস্ত রেকর্ড ফেরত দেয় যেখানে একটি supplier_id আমাদের সাবকোয়েরির ফলাফলে থাকে।
আমরা INSERT, UPDATE, এবং DELETE স্টেটমেন্টে সাবকোয়ারি ব্যবহার করতে পারি।
81% অংশগ্রহণকারী বলেছেন যে তারা বুটক্যাম্পে যোগ দেওয়ার পরে তাদের প্রযুক্তিগত কাজের সম্ভাবনা সম্পর্কে আরও আত্মবিশ্বাসী বোধ করেছেন। আজই একটি বুটক্যাম্পের সাথে মিলিত হন৷
৷গড় বুটক্যাম্প গ্র্যাড একটি বুটক্যাম্প শুরু করা থেকে শুরু করে তাদের প্রথম চাকরি খোঁজা পর্যন্ত ক্যারিয়ারের পরিবর্তনে ছয় মাসেরও কম সময় কাটিয়েছে।
একটি সাবকোয়েরি অবশ্যই বন্ধনীতে উপস্থিত হবে। এটি একটি সাবকোয়েরির ভিতরটিকে অন্য সাবকোয়েরির সাথে আলাদা করে।
আপনি নিশ্চিত করুন যে আপনি আপনার সাবকোয়েরিতে প্রাসঙ্গিক ডেটা নির্বাচন করেছেন। উপরের আমাদের সাবকোয়েরিতে, আমরা id নির্বাচন করেছি সরবরাহকারীদের থেকে টেবিল আমরা যদি অন্য একটি কলাম নির্বাচন করতাম, তাহলে আমাদের ক্যোয়ারী কাজ করবে না। কারণ আমাদের প্রধান প্রশ্নটি সরবরাহকারীর আইডির উপর নির্ভর করে।
SQL সাবকোয়েরি উদাহরণ:নির্বাচন করুন
বলুন যে আপনি অনার রোলে থাকা ছাত্রদের একটি তালিকা পেতে চান, আপনি একটি সাবকুয়েরি ব্যবহার করতে পারেন . এটি অনুমান করে যে সম্মান রোল তথ্য অন্য টেবিলে আছে।
কিভাবে SQL সাবকোয়েরি তা বোঝাতে একটি উদাহরণ ব্যবহার করা যাক কাজ নিম্নলিখিত ক্যোয়ারীটি সেই সমস্ত গ্রাহকদের একটি তালিকা ফেরত দেবে যারা $200 এর বেশি মূল্যের একটি অর্ডার করেছে:
SELECT * FROM customers WHERE id IN (SELECT DISTINCT customer_id FROM orders WHERE cost > 200);
আমাদের subquery নিম্নলিখিত প্রদান করে:
নাম | ইমেল | ঠিকানা | আনুগত্য_পরিকল্পনা | id |
ক্যাটি | [email protected] | মাউন্টেন ভিউ, CA | কোনটিই নয় | 4 |
জন | [email protected] | বোস্টন, MA | কোনটিই নয় | 1 |
(2 সারি)
প্রথম লাইনে, আমরা আমাদের গ্রাহকদের থেকে প্রতিটি কলাম নির্বাচন করি টেবিল তারপর, আমরা নির্দিষ্ট করি যে আমরা শুধুমাত্র সেই গ্রাহকদের পেতে চাই যাদের গ্রাহক আইডি সাবকোয়েরিতে আছে . আমাদের subquery আমাদের অর্ডার থেকে সমস্ত অনন্য গ্রাহক আইডি নির্বাচন করে টেবিল যেখানে আইটেমের দাম $200 এর বেশি। এই শর্তগুলির সাথে মিলে যাওয়া রেকর্ডগুলি ফলাফলগুলিতে সেই গ্রাহকদের অন্তর্ভুক্ত করে৷
৷SQL সাবকোয়ারি:INSERT
আমরা high_value_customers নামে একটি টেবিলে $200-এর বেশি মূল্যের একটি কেনাকাটা করা গ্রাহকদের সমস্ত রেকর্ড সন্নিবেশ করতে চাই৷ এটি করার জন্য, আমরা একটি 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_customer কে জিজ্ঞাসা করি টেবিল, আমরা আমাদের উচ্চ মূল্যের সমস্ত গ্রাহকদের একটি টেবিলে দেখতে পারি:
নাম | ইমেল | ঠিকানা | আনুগত্য_পরিকল্পনা | id |
ক্যাটি | [email protected] | মাউন্টেন ভিউ, CA | সোনা | 4 |
জন | [email protected] | বোস্টন, MA | কোনটিই নয় | 1 |
(2 সারি)
SQL সাবকোয়েরি:আপডেট
আমরা একটি subquery ব্যবহার করতে পারি একটি টেবিলের মধ্যে ডেটা আপডেট করতে। উদাহরণস্বরূপ, বলুন যে আমরা ব্রোঞ্জ-এ উচ্চ-মূল্যের কেনাকাটা করেছেন এমন সমস্ত গ্রাহকদের আনুগত্য পরিকল্পনা আপডেট করতে চাই। . আমরা সেই অপারেশনটি সম্পাদন করতে নিম্নলিখিত ক্যোয়ারী ব্যবহার করতে পারি:
UPDATE customers SET loyalty_plan = 'High Value' WHERE id IN (SELECT DISTINCT customer_id FROM orders WHERE cost > 200);
যখন আমরা আমাদের গ্রাহকদের জিজ্ঞাসা করি টেবিলে, আমরা দেখতে পাচ্ছি যে আমাদের দুই উচ্চ মূল্যের জন্য আনুগত্য পরিকল্পনা গ্রাহকদের আপডেট করা হয়েছে:
নাম | ইমেল | ঠিকানা | আনুগত্য_পরিকল্পনা | id |
ক্যাটি | [email protected] | মাউন্টেন ভিউ, CA | উচ্চ মান | 4 |
জন | [email protected] | বোস্টন, MA | উচ্চ মান | 1 |
(2 সারি)
SQL সাবকোয়েরি:মুছুন
আপনি subqueries ব্যবহার করতে পারেন একটি টেবিলে পৃথক বা একাধিক সারি মুছে ফেলার জন্য SQL DELETE বিবৃতি দিয়ে।
আসুন একটি কমান্ড লিখি যা উচ্চ মূল্যের গ্রাহকদের আদেশ মুছে দেয়, যা আমরা ডাটাবেসের একটি নতুন টেবিলে স্থানান্তরিত করেছি। এটি করার জন্য, আমাদের একটি সাবকোয়েরির উপর নির্ভর করতে হবে:
DELETE FROM orders WHERE customer_id IN (SELECT id FROM customers WHERE loyalty_plan = 'High Value');
আমরা দেখতে পাচ্ছি আমাদের উচ্চ মূল্যের গ্রাহকদের কাছ থেকে সমস্ত অর্ডার মুছে ফেলা হয়েছে। আমাদের নেস্টেড সাবকোয়েরি ফিরে আসে:
id | আইটেম_নাম | খরচ | customer_id |
5 | ওক চেয়ার | 100 | 3 |
(1 সারি)
উপসংহার
একটি এসকিউএল সাবকোয়েরি হল অন্য কোয়েরির মধ্যে একটি কোয়েরি। সাবকোয়ারিগুলি আপনাকে অন্য একটি প্রশ্নের ফলাফলের উপর নির্ভর করতে দেয়। একটি SQL স্টেটমেন্টের HAVING বা WHERE ক্লজে সাবকোয়ারিগুলি নির্দিষ্ট করা আছে৷
৷সাবকোয়েরি একটি কোয়েরি চালানো সহজ করুন যা অন্য প্রশ্নের ফলাফলের উপর নির্ভর করে। এই নির্দেশিকায়, আমরা আলোচনা করেছি কিভাবে একটি subquery লিখতে হয় একটি SQL-এ সার্ভার SELECT-এ কীভাবে সাবকোয়ারি ব্যবহার করতে হয় সে বিষয়েও আমরা কথা বলেছি , ঢোকান , আপডেট , এবং এসকিউএল মুছুন বিবৃতি।
আপনি কি এসকিউএল-এ কোডিং সম্পর্কে আরও জানতে চান? আমাদের কিভাবে শিখবেন SQL গাইড দেখুন। এই নির্দেশিকাটিতে SQL শেখার বিষয়ে বিশেষজ্ঞের পরামর্শ রয়েছে। আপনার শেখার যাত্রা চালিয়ে যেতে সাহায্য করার জন্য আপনি সেরা কোর্সের একটি তালিকাও পাবেন।