একটি SQL LEFT JOIN হলো SQL জয়েনের একটি প্রকার। এই জয়েন আপনার কোয়েরিতে নির্দিষ্ট "বাম" কলামের সকল টেবিল এবং "ডান" কলামে একটি নির্দিষ্ট শর্ত অনুযায়ী মিলে যাওয়া সংশ্লিষ্ট সারিগুলো ফেরত দেয়।
অনেক কেসে, যখন আপনি SQL-এ একটি কোয়েরি লিখেন, তবে আপনাকে শুধু একটি টেবিলের ওপর ফোকাস করতে হয়। যাইহোক, অনেক পরিস্থিতিতে আপনাকে দুটি বা ততোধিক টেবিল একসাথে কোয়েরি করতে হবে। এই পরিস্থিতিতে, আপনি একটি ফলাফল তৈরি করতে চাবেন যা দুই টেবিলের তথ্য একত্রিত করে।
SQL-এ, এটিকে জয়েন বলা হয়। জয়েন আপনাকে একাধিক টেবিল থেকে তথ্য পেতে দেয় এবং ফলাফল একটি জয়েন করা টেবিলে একত্রিত করতে দেয়। উদাহরণস্বরূপ, আপনি employees এবং departments টেবিল জয়েন করতে পারেন প্রতিটি কর্মীর ডিপার্টমেন্টের নাম পেতে।
এই টিউটোরিয়ালে আমরা SQL-এ এক ধরনের জয়েন ভাঙে আলোচনা করব: LEFT JOIN। আমরা আলোচনা করব LEFT JOINs কোথায় উপযোগী, এবং আপনি কীভাবে আপনার SQL কোয়েরিতে এগুলো ব্যবহার করতে পারেন।
SQL LEFT JOIN
SQL LEFT JOIN আপনার কোয়েরিতে নির্দিষ্ট একটি "বাম" টেবিলের সকল রেকর্ড ফেরত দেয়। এটি এই টেবিলের মানগুলো আপনার শর্ত অনুযায়ী একটি "ডান" টেবিলের সাথে মিলিয়ে দেয়। যেকোনো মিল ফেরত দেয়া হয় বাম টেবিলের সকল রেকর্ডের পাশাপাশি। LEFT JOINs হলো SQL আউটার জয়েনের একটি প্রকার।
উদাহরণস্বরূপ, আপনি একটি লেফট জয়েন ব্যবহার করতে পারেন প্রতিটি কর্মীর ডিপার্টমেন্টের নামের তালিকা পেতে। এতে আপনি সকল কর্মী দেখতে পাবেন এমনকি যদি তাদের কোন ডিপার্টমেন্ট অ্যাসাইন করা না থাকে।
LEFT JOIN অপারেশনের বেসিক সিনট্যাক্স নিচের মতো:
SELECT Table1.Column1, Table2.Column1 FROM Table1 LEFT JOIN Table2 ON Table1.Column2 = Table1.Column2;
আমরা আমাদের জয়েন SQL SELECT স্টেটমেন্ট দিয়ে শুরু করি। FROM স্টেটমেন্টের টেবিলই আমাদের "বাম" টেবিল। তারপর, আমরা LEFT JOIN কিওয়ার্ড ব্যবহার করি। এতে আমরা একটি "ডান" টেবিল নির্দিষ্ট করতে পারি।
আমরা ON স্টেটমেন্ট ব্যবহার করি আমাদের টেবিল দুটি কী কন্ডিশনে সংযুক্ত হবে সেটি নির্ধারণ করতে। LEFT JOINS হলো আউটার জয়েনের একটি প্রকার। তাই আপনি এই ধরনের জয়েনকে left outer joins বলতে শুনতে পারেন।
চলুন একটি উদাহরণ দিয়ে LEFT JOINs কীভাবে কাজ করে সেটি বুঝি।
LEFT JOIN SQL উদাহরণ
ধরুন আমরা প্রতিটি কর্মী যে ডিপার্টমেন্টে কাজ করে তার নামের তালিকা চাই। আমরা এই তথ্য একটি কোয়েরি ব্যবহার করে পেতে চাই। এখানে একটি কোয়েরি যা আমাদের এই ডেটা পেতে দেবে:
SELECT employees.name, employees.title, company_departments.name AS DeptName FROM employees LEFT JOIN company_departments ON employees.department_id = company_departments.department_id;
আমাদের কোuery সাতটি রেকর্ড ফেরত দেয়:
| name | title | deptname |
| Luke | Sales Associate | Sales |
| Mike | Sales Associate | Sales |
| Hannah | Sales Associate | Sales |
| Geoff | Senior Sales Associate | Sales |
| Alexis | Sales Associate | Sales |
| Emma | Marketing Director | Marketing |
| Jonah | Vice President of Sales | Executive |
(৭ সারি)
আমাদের কোয়েরির প্রথম লাইনে, আমরা নির্দিষ্ট করি আমরা তিনটি কলাম চাই। আমরা আমাদের কর্মীদের নাম, তাদের টাইটেল, এবং সে যে ডিপার্টমেন্টে কাজ করে তার নাম পাই। AS DeptName আমাদের কোয়েরিকে বলে ডিপার্টমেন্ট নাম কলামটি DeptName নামে ডাকা হবে।
পরবর্তী লাইনে, আমরা নির্দিষ্ট করি আমরা আমাদের employees টেবিল থেকে তথ্য চাই। তারপর, আমরা সেই টেবিল এবং company_departments-এর মধ্যে একটি LEFT JOIN তৈরি করি। চূড়ান্ত লাইনে, আমরা আমাদের দুটি টেবিল তাদের সাধারণ মান: department_id দিয়ে লিঙ্ক করি।
LEFT JOINs শুধু বাম টেবিলের সকল সারি এবং ডান টেবিলের সারিগুলো ফেরত দেয় যেখানে জয়েন কন্ডিশন পূরণ হয়।
যদি আমাদের একজন কর্মী থাকে যাদের ডিপার্টমেন্ট ID 9 এবং সেই ডিপার্টমেন্টটি অস্তিত্বে নেই, তবে সেও আমাদের কোয়েরিতে প্রদর্শিত হবে। যদি আমাদের একটি কোম্পানি ডিপার্টমেন্ট থাকে যা অস্তিত্বে নেই, তবে সেটি আমাদের JOIN কোয়েরিতে প্রদর্শিত হবে না।
চলুন একই কোয়েরি আবার চালাই, কিন্তু এইবার আমাদের ডেটাবেসে একটি নতুন কর্মী যোগ করি। আমাদের নতুন কর্মীর মানগুলো নিচে:
| name | title | department_id |
| Adam | Senior Sales Associate | 9 |
(১ সারি)
ডিপার্টমেন্ট ID 9 আমাদের company_departments টেবিলে وجود নেই। কিন্তু একই লেফট জয়েন কোয়েরি চালালে অ্যাডামের রেকর্ড অন্তর্ভুক্ত থাকবে, কারণ আমরা LEFT JOIN ব্যবহার করছি। এখানে একই INNER JOIN কোয়েরির ফলাফল যা আমরা উপরে এক্সিকিউট করেছিলাম, কিন্তু অ্যাডামের রেকর্ডসহ:
| name | title | deptname |
| Luke | Sales Associate | Sales |
| Mike | Sales Associate | Sales |
| Hannah | Sales Associate | Sales |
| Geoff | Senior Sales Associate | Sales |
| Alexis | Sales Associate | Sales |
| Emma | Marketing Director | Marketing |
| Jonah | Vice President of Sales | Executive |
| Adam | Senior Sales Associate |
উপসংহার
SQL LEFT JOINs একাধিক টেবিল কোয়েরি করে এবং একটি নির্দিষ্ট "বাম" টেবিলের সকল সারি ফেরত দেয়। এগুলো ডান টেবিলের সারিও ফেরত দেয় যেখানে JOIN কন্ডিশন পূরণ হয়।
উদাহরণস্বরূপ, ধরুন আপনি গ্রাহকদের তালিকা এবং সে যেসব লয়ালটি প্ল্যানে সাবস্ক্রাইব করেছে তার নাম ফেরত দিতে চান। যদি লয়ালটি প্ল্যানের নাম অন্য একটি টেবিলে থাকে, তবে আপনি একটি লেফট জয়েন ব্যবহার করে সেগুলো পুনরুদ্ধার করতে পারেন।
আমরা একটি How to Learn SQL গাইড লিখেছি SQL শেখার ইচ্ছুকদের জ্ঞান অগ্রসর করতে সাহায্য করার জন্য। গাইডে শীর্ষ লার্নিং রিসোর্সের তালিকা এবং কিছু এক্সপার্ট পরামর্শ আছে যা আপনাকে পথে সাহায্য করবে। গাইডটি আমাদের How to Learn SQL পেজে দেখুন।