আপনি যখন একটি ডাটাবেসের সাথে কাজ করছেন, তখন আপনি একই সময়ে দুটি বা তার বেশি সারণী অনুসন্ধান করতে এবং ফলাফলের একটি সম্মিলিত সেট তৈরি করতে চাইতে পারেন। উদাহরণস্বরূপ, আপনি প্রতিটি কর্মচারীর নাম এবং তারা যে বিভাগের জন্য কাজ করেন তা খুঁজে বের করতে চাইতে পারেন, যেখানে এই দুটি তথ্য দুটি ভিন্ন টেবিলে সংরক্ষণ করা হয়।
সেখানেই SQL
যোগদান আসে। আপনি যখন টেবিলে যোগ দেন, আপনি একাধিক টেবিল জুড়ে একটি ক্যোয়ারী চালাতে পারেন এবং একটি সম্মিলিত ফলাফল তৈরি করতে পারেন।
এই নির্দেশিকায়, আমরা এক ধরনের যোগদানের উপর ফোকাস করতে যাচ্ছি:OUTER JOIN
. OUTER JOIN
অপারেটররা সারি ফেরত দেয় এমনকি যদি তাদের চূড়ান্ত টেবিলে সম্পর্কিত সারি না থাকে। আমরা তিন ধরনের OUTER JOIN
নিয়ে আলোচনা করব s, তারা কিভাবে কাজ করে এবং কিভাবে আপনি আপনার SQL
এ ব্যবহার করতে পারেন প্রশ্ন।
SQL রিফ্রেশারে যোগ দেয়
প্রশ্ন, যা সাধারণত SELECT
দিয়ে শুরু হয় বিবৃতি, একটি ডাটাবেস থেকে তথ্য পুনরুদ্ধার করতে ব্যবহৃত হয়। সাধারণত, আপনি যখন একটি ক্যোয়ারী লিখছেন তখন আপনি একটি টেবিল থেকে তথ্য পুনরুদ্ধারের উপর ফোকাস করবেন এবং FROM
ব্যবহার করবেন আপনার কমান্ড কোন টেবিলটি জিজ্ঞাসা করবে তা নির্দিষ্ট করার জন্য ক্লজ। এখানে একটি স্ট্যান্ডার্ড SQL
লেখার জন্য সিনট্যাক্স রয়েছে প্রশ্ন:
table_name থেকে কলামের_নাম নির্বাচন করুন যেখানে নির্দিষ্ট_ শর্ত_ পূরণ হয়;
এখানে একটি প্রশ্নের উদাহরণ দেওয়া হল যা employees
-এর প্রতিটি কর্মচারীর নামের একটি তালিকা পুনরুদ্ধার করবে টেবিল:
কর্মচারীদের থেকে নাম নির্বাচন করুন;
আমাদের ক্যোয়ারী নিম্নলিখিতগুলি প্রদান করে:
নাম |
লুক মাইক হান্না জিওফ অ্যালেক্সিস এমা জোনাহ আদম |
(8 সারি)
আমরা WHERE
ব্যবহার করতে পারি আমাদের প্রশ্নের ফলাফলগুলিকে ফিল্টার করার ক্লজ শুধুমাত্র সেই রেকর্ডগুলি অন্তর্ভুক্ত করতে যা নির্দিষ্ট মানদণ্ডের সেট পূরণ করে৷ উদাহরণস্বরূপ, আমরা একটি প্রশ্ন লিখতে পারি যা সমস্ত বিক্রয় সহযোগী বা সমস্ত নির্বাহী কর্মীদের নাম খুঁজে পায়৷
81% অংশগ্রহণকারী বলেছেন যে তারা বুটক্যাম্পে যোগ দেওয়ার পরে তাদের প্রযুক্তিগত কাজের সম্ভাবনা সম্পর্কে আরও আত্মবিশ্বাসী বোধ করেছেন। আজই একটি বুটক্যাম্পের সাথে মিলিত হন৷
৷গড় বুটক্যাম্প গ্র্যাড একটি বুটক্যাম্প শুরু করা থেকে শুরু করে তাদের প্রথম চাকরি খোঁজা পর্যন্ত ক্যারিয়ারের পরিবর্তনে ছয় মাসেরও কম সময় ব্যয় করেছে।
কিন্তু আমরা যদি একাধিক টেবিল থেকে তথ্য পেতে চাই এবং ফলাফলটিকে একটি টেবিলে একত্রিত করতে চাই? সেখানেই যোগদান আসে।
যোগদানগুলি আপনাকে একাধিক টেবিল অনুসন্ধান করতে এবং মিলে যাওয়া সারিগুলির সাথে একটি সম্মিলিত ফলাফল সেট তৈরি করতে দেয়৷ তিনটি প্রধান ধরনের যোগদান আছে:INNER JOIN
, OUTER JOIN
, এবং CROSS JOIN
.
INNER JOIN
s রিটার্ন সারি যেখানে আপনি অনুসন্ধান করছেন উভয় টেবিলে মিল আছে, যেখানে OUTER JOIN
যোগ করা টেবিলে তাদের সম্পর্কিত সারি না থাকলেও s রিটার্ন সারি। CROSS JOIN
s যোগদানের শর্ত ছাড়াই যোগ করা হয়, এবং একটি টেবিলের প্রতিটি সারি অন্য টেবিলের সংশ্লিষ্ট সারির সাথে মিলিত হয়।
SQL বাইরের যোগদান
যেমনটি আমরা আলোচনা করেছি, আপনি যখন একটি INNER JOIN
করছেন , যেকোনো একটি টেবিলের সারি যা অন্য টেবিলে অতুলনীয় ফলাফল সেটে ফেরত দেওয়া হবে না। কিন্তু যদি আমরা এই মান পেতে চেয়েছিলেন? আমরা OUTER JOIN
ব্যবহার করতে পারি এই ডেটা পুনরুদ্ধার করতে।
OUTER JOIN
তিন প্রকার :
LEFT OUTER JOINS
বাম টেবিল থেকে অতুলনীয় সারি ফেরত দিন;RIGHT OUTER JOINS
ডান টেবিল থেকে অতুলনীয় সারি ফেরত দিন;FULL OUTER JOINS
সমস্ত টেবিল থেকে অতুলনীয় সারি ফেরত দিন।
OUTER JOIN
s আমাদের প্রয়োজনের উপর ভিত্তি করে উভয় টেবিলের রেকর্ডগুলিকে মেলাতে সক্ষম এবং আমরা যে ধরনের যোগদান ব্যবহার করি তার সাথে প্রাসঙ্গিক সমস্ত রেকর্ড ফিরিয়ে দেবে৷
SQL যোগ দেয়:বাম
বাম যোগদানগুলি বাম টেবিল থেকে সমস্ত সারি ফেরত দেয় এবং ডান টেবিল থেকে সারিগুলি যেখানে যোগদানের শর্ত পূরণ হয়৷
ধরা যাক যে আমাদের দুটি টেবিল আছে:employees
এবং company_departments
. এখন ধরুন যে আমরা প্রত্যেক কর্মচারীর নাম এবং তাদের বিভাগের নাম পেতে চাই, এমনকি যদি তারা কোনো বিভাগে নিয়োগ না করা হয়। আমরা একটি LEFT JOIN
ব্যবহার করে এই তথ্য পেতে পারি .
নীচে একটি LEFT JOIN
এর একটি উদাহরণ ক্যোয়ারী যা প্রত্যেক কর্মচারীর নাম এবং তাদের বিভাগের নাম পুনরুদ্ধার করবে কর্মচারী এবং কোম্পানি_ডিপার্টমেন্ট টেবিলগুলিকে তাদের সাধারণ মান ব্যবহার করে একত্রিত করে:Department_id৷
কর্মচারীদের নাম নির্বাচন করুন, company_departments.name FROM কর্মচারীদের থেকে লেফ্ট যোগ দিন company_departmentsON staff.department_id =company_departments.department_id;
আমাদের ক্যোয়ারী নিম্নলিখিতগুলি প্রদান করে:
নাম | নাম |
লুক | বিক্রয় |
মাইক | বিক্রয় |
হানা | বিক্রয় |
জিওফ | বিক্রয় |
অ্যালেক্সিস | বিক্রয় |
এমা | বিপণন |
জোনা | নির্বাহী |
আদম | |
(8 সারি)
আপনি দেখতে পাচ্ছেন, LEFT JOIN
employees
থেকে সমস্ত সারি ফিরিয়ে দিয়েছে৷ টেবিল, এমনকি যে বিভাগে তারা কাজ করে সেটি company_departments
-এ পাওয়া না গেলেও টেবিল।
আপনি যদি বাম যোগদান সম্পর্কে আরও জানতে চান, আপনি SQL
-এ ক্যারিয়ার কর্মা টিউটোরিয়ালটি পড়তে পারেন এখানে অপারেশন।
SQL যোগ দেয়:ডান
RIGHT JOIN
বিবৃতি হল LEFT JOIN
এর সরাসরি বিপরীত অপারেটর. RIGHT JOIN
ডান টেবিল থেকে সমস্ত সারি এবং সেইসাথে বাম টেবিলের সারি যেখানে যোগদানের শর্ত পূরণ করা হয় তা ফেরত দেয়।
ধরা যাক যে আমরা সমস্ত বিভাগের নামের তালিকা পেতে চাই সেইসাথে সেই বিভাগে কাজ করা প্রত্যেক কর্মচারীর নামের তালিকা। এবং আমরা সেই বিভাগের জন্য ডেটা পেতে চাই যেখানে কোনও কর্মচারী নিয়োগ করা হয় না। আমরা এই ডেটা পেতে নিম্নলিখিত ক্যোয়ারী ব্যবহার করতে পারি:
কর্মচারিদের থেকে "DeptName" হিসেবে company_departments.name নির্বাচন করুন, company_departmentsON staff.department_id =company_departments.department_id;
উপরের প্রশ্নটি নিম্নলিখিতগুলি প্রদান করে:
নাম | “deptname” |
লুক | বিক্রয় |
মাইক | বিক্রয় |
হানা | বিক্রয় |
জিওফ | বিক্রয় |
অ্যালেক্সিস | বিক্রয় |
এমা | বিপণন |
জোনা | নির্বাহী |
| পে-রোল |
| তথ্য প্রযুক্তি |
(9 সারি)
আপনি দেখতে পাচ্ছেন, আমাদের ক্যোয়ারী সমস্ত বিভাগের একটি তালিকা প্রদান করেছে, সেইসাথে সেই বিভাগের জন্য কাজ করে এমন প্রতিটি কর্মচারীর নাম। প্রশ্নটি বিভাগগুলিকেও Payroll
ফেরত দিয়েছে এবং Information Technology
, যার বর্তমানে কোন কর্মী নেই।
উপরন্তু, আমাদের ক্যোয়ারী অ্যাডামকে ফেরত দেয়নি, যিনি আমাদের LEFT JOIN
-এর কর্মচারী ছিলেন প্রশ্ন যাকে কোন বিভাগে নিয়োগ করা হয়নি। এর কারণ হল RIGHT JOIN
সঠিক টেবিলের সমস্ত সারি অন্তর্ভুক্ত করে—কোম্পানী_বিভাগ—যেখানে আমাদের শর্ত পূরণ করা হয়, এবং ডান টেবিলের কোনো রেকর্ডের সাথে অ্যাডামের কোনো অধিভুক্তি নেই।
সম্পূর্ণ SQL আউটার যোগদান
Full OUTER JOIN
s হল একটি অস্বাভাবিক প্রকারের SQL join
যেটি উভয় টেবিল থেকে অতুলনীয় রেকর্ড ফেরত দিতে ব্যবহার করা যেতে পারে। প্রায়ই, full OUTER JOIN
দুটি টেবিলের মধ্যে কতটা ওভারল্যাপ আছে তা বোঝার জন্য সমষ্টিগত ফাংশনের সাথে s ব্যবহার করা হয়।
ধরা যাক যে আমরা সমস্ত কর্মচারী এবং বিভাগের একটি তালিকা পেতে চাই। আমরা নিম্নলিখিত SQL
ব্যবহার করতে পারি সেই তথ্য পুনরুদ্ধার করার জন্য ক্যোয়ারী:
কর্মচারীদের থেকে "DeptName" হিসাবে কোম্পানি_departments.name নির্বাচন করুন সম্পূর্ণ বাইরের সাথে যোগ দিন company_departmentsON কর্মচারী. বিভাগআমাদের ক্যোয়ারী নিম্নলিখিতগুলি প্রদান করে:
নাম | “deptname” |
লুক | বিক্রয় |
মাইক | বিক্রয় |
হানা | বিক্রয় |
জিওফ | বিক্রয় |
অ্যালেক্সিস | বিক্রয় |
এমা | বিপণন |
জোনা | নির্বাহী |
আদম | |
| পে-রোল |
| তথ্য প্রযুক্তি |
(10 সারি)
উপরের ফলাফল সেটে প্রত্যেক কর্মচারীর নামের একটি তালিকা রয়েছে, সেইসাথে তাদের যে বিভাগে নিয়োগ করা হয়েছে, এমনকি যদি তারা একটি বিভাগে নিয়োগ না করা হয়। ফলাফল সেটে সমস্ত বিভাগের নামের একটি তালিকাও অন্তর্ভুক্ত থাকে, এমনকি যদি কোনো বিভাগের কোনো কর্মচারী নিয়োগ না থাকে।
উপসংহার
Joins
একটি SQL
সার্ভার ফাংশন যা আপনাকে একই সময়ে দুই বা ততোধিক টেবিল অনুসন্ধান করতে এবং একটি সম্মিলিত ফলাফল সেট তৈরি করতে দেয়। উদাহরণস্বরূপ, আপনি যদি কোম্পানির কর্মীদের তালিকা পেতে চান, সেইসাথে তাদের সাম্প্রতিক বেতনের চেক প্রক্রিয়াকরণের তারিখ পেতে চান, আপনি একটি join
ব্যবহার করতে পারেন। .
এই টিউটোরিয়ালে, আমরা OUTER JOIN
এর উপর ফোকাস করেছি s, যা একটি join
-এ সারিগুলি ফিরিয়ে দেয় যোগ করা টেবিলে তাদের সম্পর্কিত সারি না থাকলেও। এছাড়াও আমরা তিনটি প্রধান ধরনের OUTER JOIN
নিয়ে আলোচনা করেছি s—LEFT JOIN
, RIGHT JOIN
, এবং full OUTER JOIN
—এবং তারা অনুশীলনে কিভাবে কাজ করে তা অন্বেষণ করেছে।
এখন আপনি SQL JOIN
সম্পাদন করতে প্রস্তুত একজন বিশেষজ্ঞের মত অপারেশন!