UNION অপারেটর ২ বা অধিক SELECT স্টেটমেন্টের রেজাল্ট সেট কম্বাইন করতে ব্যবহৃত হয়। এটি এই SELECT স্টেটমেন্টগুলোর ডুপ্লিকেট সারি মুছে ফেলে।
UNION অপারেটরের প্রতিটি SELECT-এ রেজাল্ট সেটে একই সংখ্যক কলাম থাকতে হবে সংশ্লিষ্ট ডেটা টাইপসহ।
UNION অপারেটর সিনট্যাক্স
SELECT bieu_thuc1, bieu_thuc2, … bieu_thucn FROM bang [WHERE dieu_kien] UNION SELECT bieu_thuc1, bieu_thuc2, … bieu_thucn FROM bang [WHERE dieu_kien];
ভেরিয়েবল নাম বা মান
bieu_thuc1, bieu_thuc2, ... bieu_thucn
রিট্রিভ করতে চাওয়া কলাম বা ক্যালকুলেটেড ভ্যালু।
bang
রেকর্ড পেতে চাওয়া টেবিল। FROM ক্লজে কমপক্ষে ১ টি টেবিল থাকতে হবে।
WHERE dieu_kien
ঐচ্ছিক। রেকর্ড সিলেক্ট করার শর্ত।
নোট:
- ২টি SELECT স্টেটমেন্টে একই সংখ্যক এক্সপ্রেশন থাকতে হবে
- প্রতিটি SELECT স্টেটমেন্টের সংশ্লিষ্ট কলাম একই ডেটা টাইপের হতে হবে
- UNION অপারেটর ডুপ্লিকেট সারি মুছে ফেলে।
UNION ALL অপারেটরও দেখুন।
উদাহরণ - একটি ইনফরমেশন ফিল্ড রিটার্ন
উদাহরণস্বরূপ, UNION অপারেটর একাধিক SELECT স্টেটমেন্ট থেকে একটি ফিল্ড রিটার্ন করে (এবং একই ডেটা টাইপ वाले ফিল্ড)।
SELECT sanpham_id FROM sanpham UNION SELECT sanpham_id FROM hangtonkho;
উপরের উদাহরণে, যদি কোনো sanpham_id sanpham এবং hangtonkho দুটি টেবিলে থাকে, তবে রেজাল্ট সেটে শুধু ১টি sanpham_id থাকবে। ডুপ্লিকেট রেকর্ড মুছে ফেলতে না চাইলে UNION ALL অপারেটর ব্যবহার করুন।
উদাহরণ - ORDER BY ব্যবহার
UNION অপারেটর ORDER BY ক্লজ ব্যবহার করে কোয়েরি ফলাফল সর্ট করতে পারে।
SELECT danhba_id, danhba_ten FROM danhba WHERE ten_trang = 'QuanTriMang.com' UNION SELECT congty_id, congty_ten FROM congty WHERE ten_trang = 'TrangCuaBan.com' ORDER BY 2;
এই উদাহরণে, যেহেতু দুটি SELECT স্টেটমেন্টে কলামের নাম ভিন্ন, তাই ORDER BY স্টেটমেন্টে কলাম রেফার করা রেজাল্ট সেটে পজিশন দিয়ে সহজ। উপরের উদাহরণে, আমরা danhba_ten / congty_ten আরোহী ক্রমে ফিল্টার করেছি ORDER BY 2 দিয়ে।
danhba_ten / congty_ten রেজাল্ট সেটে ২য় পজিশনে আছে।