যখন আপনি একটি ডেটাবেসের সাথে কাজ করেন, তখন এমন সময় আসতে পারে যখন আপনি একটি নির্দিষ্ট ডেটাসেটের সকল অনন্য (unique) মান পেতে চান। উদাহরণস্বরূপ, আপনি অতীতে যে পণ্যগুলো বিক্রি করেছেন তাদের নামের তালিকা চাইতে পারেন, অথবা একটি মুভি ডেটাবেসে যে সকল ভিন্ন ক্যাটেগরির মুভি আছে সেটির তালিকা চাইতে পারেন।
SQL-এ এই তথ্য পেতে একটি বিল্ট-ইন ফাংশন আছে: DISTINCT। DISTINCT অপারেটর আপনাকে ডুপ্লিকেট রেকর্ড সরিয়ে একটি ডেটাসেটের সকল অনন্য মানের কম্বিনেশন পুনরুদ্ধার করতে দেয়।
এই টিউটোরিয়ালে আমরা SQL-এ DISTINCT-এর মূলভূত বিষয়গুলো ভাঙে আলোচনা করব এবং আপনি কখন এই অপারেটর ব্যবহার করতে পারেন সেটি জানব।
SQL Query রিফ্রেশার
একটি ডেটাবেস থেকে তথ্য পুনরুদ্ধার করতে আপনাকে একটি কোয়েরি লিখতে হয়। SQL কোয়েরি σχεদাই SELECT স্টেটমেন্ট দিয়ে শুরু হয়, এবং সেগুলো নির্দিষ্ট করে আপনি ডেটাবেস থেকে কী তথ্য পেতে চান। এখানে একটি SQL কোয়েরির বেসিক সিনট্যাক্স:
SELECT column_name FROM table_name WHERE your_query_conditions;
চলুন একটি উদাহরণ দিয়ে কোয়েরি বুঝি। নিচের কোয়েরি আমাদের ব্যবসায় কাজ করা সকল কর্মীর নাম এবং টাইটেল ফেরত দেবে:
SELECT name, title FROM employees;
আমাদের কোড নিচের ফলাফল ফেরত দেয়:
| name | title |
| Luke | Sales Associate |
| Mike | Sales Associate |
| Hannah | Sales Associate |
| Geoff | Senior Sales Associate |
| Alexis | Sales Associate |
| Jonah | Vice President of Sales |
| Emma | Marketing Director |
যদি আপনি একাধিক কলাম পুনরুদ্ধার করতে চান, তবে উপরের মত কমা দিয়ে আলাদা করুন। অথবা যদি সকল কলাম থেকে তথ্য চান, তবে এস্টারিস্ক (*) ব্যবহার করুন, যা একটি টেবিলের সকল কলামকে প্রতীক বোঝায়।
কোয়েরি লিখার সময় আমরা WHERE ব্যবহার করে নির্দিষ্ট শর্ত পূরণকারী রেকর্ড ফিল্টার করতে পারি। উদাহরণস্বরূপ, আমাদের ব্যবসায় কাজ করা সকল সেলস অ্যাসোসিয়েট পেতে চাইলে নিচের কোয়েরি ব্যবহার করতে পারি:
SELECT name, title FROM employees WHERE title = 'Sales Associate':
আমাদের কোয়েরি নিচের ফলাফল ফেরত দেয়:
| name | title |
| Luke | Sales Associate |
| Mike | Sales Associate |
| Hannah | Sales Associate |
| Alexis | Sales Associate |
(৪ সারি)
এখন কোয়েরির বেসিক জানা থাকায়, আমরা SQL-এ DISTINCT কীভাবে ব্যবহার করতে হয় সেটি অন্বেষণ করতে পারি।
SQL Distinct
যখন আপনি ডেটাবেস থেকে ডেটা সংগ্রহ করেন, ফলাফলে ডুপ্লিকেট সারি বা মান থাকতে পারে। ধরুন আমরা আমাদের কর্মীদের ধারণ করা সকল টাইটেলের তালিকা চাই। যদি আমরা স্ট্যান্ডার্ড SELECT কোয়েরি ব্যবহার করি, তবে ডুপ্লিকেট মান পাব। উদাহরণ:
SELECT title FROM employees;
আমাদের কোয়েরি নিচের ফলাফল ফেরত দেয়:
| title |
| Sales Associate Sales Associate Sales Associate Senior Sales Associate Sales Associate Vice President of Sales Marketing Director |
(৭ সারি)
আপনি দেখতে পাচ্ছেন, Sales Associate টাইটেল চারবার আসেছে, কারণ চারজন কর্মী এই টাইটেল ধারণ করে। কিন্তু যদি আমরা শুধু জানতে চাই ডেটাবেসে কী কী টাইটেল আছে, না যে কতজন সেই টাইটেল ধারণ করে?
এখানেই SQL DISTINCT অপারেটর কাজে লাগে। SQL DISTINCT ক্লজ ব্যবহার করে আমরা কোয়েরি থেকে সকল ডুপ্লিকেট ডেটা সরিয়ে ফেলতে পারি।
DISTINCT কিওয়ার্ড SELECT অপারেটরসহ ব্যবহার করা হয়। এখানে উপরের মতো কোয়েরি কিন্তু DISTINCT অপারেটরসহ:
SELECT DISTINCT title FROM employees;
আমাদের কোয়েরি নিচের ফলাফল ফেরত দেয়:
| title |
| Vice President of Sales Sales Associate Senior Sales Associate Marketing Director |
(৪ সারি)
আমাদের কোয়ারী কর্মীদের ধারণ করা সকল টাইটেলের তালিকা ফেরত দিয়েছে। তবে, একাধিক কর্মী যে টাইটেল ধারণ করে সেটি রিপিট করেনি। আউটপুটে কোনো ডুপ্লিকেট মান নেই।
DISTINCT অপারেটর বিশেষভাবে বড় ডেটাসেটের সাথে কাজ করার সময় উপকারী। আমাদের উদাহরণে শুধু সাতজন কর্মী আছে, কিন্তু যদি পাঁচশো জন হত, তবে DISTINCT অপারেটর ছাড়া কারা কী টাইটেল ধারণ করে সেটি বুঝতে কঠিন হত।
উপসংহার
এখন আপনি জানেন SQL সার্ভারে DISTINCT অপারেটর কীভাবে ব্যবহার করতে হয়।
আমরা আলোচনা করেছি, SQL SELECT DISTINCT আপনাকে একটি টেবিল থেকে ডেটা আনতে দেয় এবং ফলাফল থেকে যেকোনো ডুপ্লিকেট সারি বা মান সরিয়ে ফেলে। উদাহরণস্বরূপ, একটি কোম্পানির সকল শাখার তালিকা চাইলে আপনি DISTINCT ব্যবহার করে তালিকা তৈরি করতে পারেন। বড় ডেটাসেট যেখানে ডুপ্লিকেট ध्यान ব Norwegাইতে পারে, সেখানে DISTINCT খুব উপকারী।