SQL Server-এ (Transact-SQL), INTERSECT অপারেটর দুটি ডেটা সেট বা SELECT স্টেটমেন্টে সাধারণ রেকর্ডগুলো ফেরত দেওয়ার জন্য ব্যবহৃত হয়। যদি একটি রেকর্ড শুধু একটি কোয়েরিতে থাকে অন্যekte না থাকে, তবে সেটি INTERSECT-এর রেজাল্ট সেট থেকে সরিয়ে দেওয়া হয়।
INTERSECT কোয়েরি

INTERSECT কোয়েরি থেকে ফেরত আসা ফলাফলের ইলাস্ট্রেশন
ব্যাখ্যা: INTERSECT কোয়েরি নীল রঙে ভরা এলাকায় অবস্থিত রেকর্ডগুলো ফেরত দেবে। এই রেকর্ডগুলো ডেটাবেস ১ এবং ডেটাবেস ২ - দুটোতেই থাকে।
INTERSECT-এ প্রতিটি SELECT-এ একই সংখ্যক কলাম থাকতে হবে রেজাল্ট সেটে একই ডেটা টাইপের সাথে।
INTERSECT অপারেটর সিনট্যাক্স
SELECT expression1, expression2, ... expression_n
FROM table
[WHERE condition]
INTERSECT
SELECT expression1, expression2, ... expression_n
FROM table
[WHERE condition];
ভেরিয়েবল নাম বা মান
expression
SELECT স্টেটমেন্টগুলোর মাঝপথে তুলনা করার কলাম বা মান। সেগুলো প্রতিটি SELECT-এ একই ইনফরমেশন ফিল্ডে থাকতে হয় না কিন্তু відпов 득ি কলামগুলো একই ডেটা টাইপের হতে হবে।
table
যে টেবিল থেকে রেকর্ড পেতে চান। FROM ক্লজে কমপক্ষে ১টি টেবিল থাকতে হবে।
WHERE condition
ঐচ্ছিক। রেকর্ড নির্বাচনের জন্য পূরণ করতে হবে শর্ত।
নোট:
- দুটি SELECT স্টেটমেন্টে একই সংখ্যক এক্সপ্রেশন থাকতে হবে।
- প্রতিটি SELECT স্টেটমেন্টের সংশ্লিষ্ট কলামে একই ডেটা টাইপ থাকতে হবে।
- INTERSECT অপারেটর শুধু SELECT স্টেটমেন্টগুলোর সাধারণ রেকর্ড ফেরত দেয়।
উদাহরণ - ১ এক্সপ্রেশন সহ
SELECT sanpham_id
FROM sanpham
INTERSECT
SELECT sanpham_id
FROM hangtonkho;
এই উদাহরণে, যদি sanpham_id sanpham এবং hangtonkho উভয় টেবিলেই থাকে, তবে সেটি INTERSECT-এর রেজাল্ট সেটে থাকবে।
এখন এই কোয়েরিতে WHERE কন্ডিশন যোগ করুন:
SELECT sanpham_id
FROM sanpham
WHERE sanpham_id >= 50
INTERSECT
SELECT sanpham_id
FROM hangtonkho
WHERE soluong > 0;
প্রথম ডেটা সেট ফিল্টার করবে এবং sanpham_id ৫০ বা তার বেশি হলে রেকর্ড ফেরত দেবে। দ্বিতীয় ডেটা সেট hangtonkho টেবিল থেকে ফিল্টার করবে যেখানে সাজেশন ০-से বেশি।
উদাহরণ - একাধিক এক্সপ্রেশন সহ
SELECT danhba_id, ho, ten
FROM danhba
WHERE ho = 'Anderson'
INTERSECT
SELECT nhanvien_id, ho, ten
FROM nhanvien;
এই উদাহরণে, কোয়েরি দুটি SELECT স্টেটমেন্টের ইন্টারসেকশন ফলাফল ফেরত দেবে। যদি danhba তালিকায় এমন রেকর্ড থাকে যাতে danhba_id, ho, ten মিলে যায়, তবে INTERSECT কোয়েরি সেগুলো ফেরত দেবে।
উদাহরণ - ORDER BY ব্যবহার
INTERSECT কোয়েরির সাথে ORDER BY ক্লজ ব্যবহার করে ফলাফল সর্ট করুন।
SELECT nhacung_id, nhacung_ten
FROM nhacung
WHERE nhacung_id > 500
INTERSECT
SELECT congty_id, congty_ten
FROM congty
WHERE congty_ten IN ('Apple', 'Microsoft', 'SQL Server')
ORDER BY 2;
যেহেতু দুটি SELECT স্টেটমেন্টের কলাম নাম ভিন্ন, রেজাল্ট সেটে তাদের পজিশন দিয়ে ORDER BY-এ রেফারেন্স করা সহজ। উপরের উদাহরণে, nhacung_ten/congty_ten রেজাল্ট সেটে ২য় পজিশনে আছে, তাই ORDER BY 2 ব্যবহার করা হয়েছে অ্যাসেন্ডিং অর্ডারের জন্য।