যখন আপনি একটি ডেটাবেস কোয়েরি করেন, তখন আপনি দুটি বা ততোধিক SELECT স্টেটমেন্টের ফলাফল একত্রিত করতে চাইতে পারেন। উদাহরণস্বরূপ, আপনি আপনার গ্রাহকরা কোন শহরগুলোতে বাস করে এবং আপনার ব্যবসার শাখাগুলো কোন শহরগুলোতে আছে সেটির তালিকা চাইতে পারেন। আপনি দুটি আলাদা কোয়েরি চালাতে পারেন, কিন্তু হয়তো আপনি একক কোয়েরিতে ফলাফল চান।
এখানেই SQL UNION অপারেটর কাজে লাগে। UNION ক্লজ দুটি বা ততোধিক SELECT কোয়েরির ফলাফল একক ফলাফল সেটে একত্রিত করতে ব্যবহার করা যায়।
এই টিউটোরিয়ালে আমরা SQL UNION অপারেটরের মূলভূত বিষয়গুলো ভাঙে আলোচনা করব এবং ডেটাবেসের সাথে কাজ করার সময় আপনি কোথায় এই কমান্ড ব্যবহার করতে পারেন সেটি আলোচনা করব।
কোয়েরি রিফ্রেশার
প্রোগ্রামাররা ডেটাবেস থেকে তথ্য পুনরুদ্ধার করতে কোয়েরি ব্যবহার করে। কোয়েরি σχεদাই SQL SELECT স্টেটমেন্ট দিয়ে শুরু হয় এবং নির্দিষ্ট মাপদণ্ড অনুযায়ী ডেটা পুনরুদ্ধার করতে ব্যবহৃত হয়। কোয়েরিতে সাধারণত FROM অপারেটর থাকে, যা বলে কোন টেবিল কোয়েরি করা হবে, অন্যান্য অপারেটরসহ যা ফলাফল ডেটা ফিল্টার করে।
এখানে একটি SQL কোয়েরির সাধারণ সিনট্যাক্স:
SELECT column_name FROM table_name WHERE your_condititions_are_met;
এখানে একটি উদাহরণ যা সকল কর্মীর নামের তালিকা ফেরত দেয়:
SELECT name FROM employees;
আমাদের কোয়েরির আউটপুট নিচের মতো:
| name |
| Luke Mike Hannah Geoff Alexis Emma Jonah |
(৭ সারি)
যদি আপনি একাধিক কলাম থেকে তথ্য চান, তবে কলামের নামগুলো কমা দিয়ে আলাদা করুন। আর যদি সকল কলাম থেকে ডেটা চান, তবে এস্টারিস্ক (*) ব্যবহার করুন, যা একটি টেবিলের সকল কলামকে প্রতীক বোঝায়।
SQL Union
SQL UNION অপারেটর দুটি বা ততোধিক কোয়েরির ফলাফল একক প্রতিক্রিয়ায় একত্রিত করতে পারে যার ফলে একটি টেবিল তৈরি হয়।
UNION অপারেটর ব্যবহার করতে দুটি শর্ত পূরণ করতে হয়। প্রথমত, নতুন কলামগুলোর ডেটা টাইপগুলো কম্প্যাটিবল হতে হবে—যদি একটি টেবিলে বেতন ইন্টিজার হয় আর অন্যটিতে ফ্লোট হয়, তবে ইউনিয়ন কাজ করবে না। দ্বিতীয়ত, আপনার কোয়েরিগুলোতে কলামের সংখ্যা ও ক্রম একই হতে হবে।
এখানে একটি SQL UNION কোয়েরির সিনট্যাক্স:
SELECT column_name FROM table1_name UNION SELECT column_name FROM table2_name;
চলুন একটি উদাহরণ দিয়ে দেখি SQL UNION অপারেটর কীভাবে কাজ করে। ধরুন আমরা একটি ব্যবসা যাদের সকল গ্রাহককে একটি ঘোষণা পাঠাতে হবে। আমরা চাই সকল কর্মীদের ও এই ঘোষণা পাঠানো যাতে তারা জানতে পারে কী হচ্ছে।
আমরা নিচের SQL কোয়েরি ব্যবহার করে আমাদের কর্মী ও গ্রাহকদের ইমেইল তালিকা পেতে পারি যাতে সবাইকে ঘোষণা পাঠানো যায়:
SELECT name, email FROM employees UNION SELECT name, email FROM customers;
আমাদের কোয়েরির আউটপুট:
| name | |
| Emma | emma.a@gmail.com |
| Jonah | jonah.h@gmail.com |
| Hannah | hannah.y@gmail.com |
| Luke | luke.e@gmail.com |
| John | john.p@outlook.com |
| Geoff | geoff.l@gmail.com |
| Alexis | alexis.e@gmail.com |
| Fred | fred.s@gmail.com |
| Erin | erin.a@gmail.com |
| Katy | katy.l@gmail.com |
| Anne | anne.s@gmail.com |
| Tom | tom.h@gmail.com |
| Mike | mike.h@gmail.com |
| Hannah | hannah.p@gmail.com |
(১৪ সারি)
আপনি দেখতে পাচ্ছেন, আমাদের UNION কোয়েরি কর্মী ও গ্রাহকদের সকল নাম ও ইমেইল ঠিকানা একত্রিত করে ফেরত দিয়েছে।
দ্রষ্টব্য, UNION অপারেটর একত্রিত চূড়ান্ত ফলাফল থেকে ডুপ্লিকেট সারি সরিয়ে দেয়। এর মানে যদি আমাদের কর্মীদের একজন গ্রাহকও হয়, তবে তার তথ্য শুধু একবার দেখাবে।
যদি আপনি ডুপ্লিকেট সারিসহ ফলাফল চান, তবে আপনার কোয়েরিতে ALL কিওয়ার্ড যোগ করতে হবে। উদাহরণ:
SELECT name, email FROM employees UNION ALL SELECT name, email FROM customers;
উপসংহার
এই টিউটোরিয়ালে আমরা SQL সার্ভারে UNION অপারেটর কীভাবে ব্যবহার করতে হয় সেটি ভাঙে আলোচনা করেছি। আমরা দেখেছি, UNION দুটি টেবিল থেকে ডেটা নিয়ে প্রতিক্রিয়া একক টেবিলে একত্রিত করতে পারে। উদাহরণস্বরূপ, আপনার সরবরাহকাররা ও বিতরকারদের ঠিকানা দুটি আলাদা টেবিলে থাকলে, আপনি UNION কোয়েরি ব্যবহার করতে পারেন।