কম্পিউটার টিউটোরিয়াল

SQL Server-এ সাবকোয়েরি (Subquery) ব্যবহার

নিচের আর্টিকেলে SQL Server-এ সাবকোয়েরি ব্যবহারের পদ্ধতি, সিনট্যাক্স ও উদাহরণ সহ আলোচনা করা হয়েছে।

SQL-এ সাবকোয়েরি কী (What is subquery)?

SQL Server-এ একটি সাবকোয়েরি হল অন্য একটি কোয়েরির ভেতরে অবস্থিত একটি কোয়েরি। আপনি SQL কমান্ডের ভেতরে কোয়েরি তৈরি করতে পারেন। এই সাবকোয়েরিগুলো WHERE, FROM বা SELECT ক্লজে থাকতে পারে।

নোট:

  1. সাবকোয়েরিকে INNER QUERY বা INNER SELECT ও বলা হয়।
  2. সাবকোয়েরি ধারণকারী মূল কোয়েরিকে OUTER QUERY বা OUTER SELECT বলা হয়।

WHERE ক্লজে সাবকোয়েরি

সাধারণত সাবকোয়েরি WHERE ক্লজে থাকে। এই সাবকোয়েরিগুলো নেস্টেড কোয়েরি বা সাবকোয়েরি বলা হয়।

SELECT s.sanpham_id, s.sanpham_ten
FROM sanpham s
WHERE s.sanpham_id IN
 (SELECT htk.sanpham_id
 FROM hangtonkho htk
 WHERE htk.soluong > 10);

উপরের SELECT স্টেটমেন্টে সাবকোয়েরি অংশটি নিচের মতো:

(SELECT htk.sanpham_id
FROM hangtonkho htk
WHERE htk.soluong > 10);

সাবকোয়েরিটি hangtonkho টেবিল থেকে ১০ এর চেয়ে বেশি স quantità वाले sanpham_id মান খুঁজে বের করতে দেয়। তারপর মূল কোয়েরির ফলাফল ফিল্টার করতে IN কন্ডিশন দিয়ে সাবকোয়েরি ব্যবহার করা হয়েছে।

সাবকোয়েরি INNER JOIN দিয়ে ও লেখা যায়, যেমন নিচে দেখানো হলো।

SELECT s.sanpham_id, s.sanpham_ten
FROM sanpham s
INNER JOIN hangtonkho htk
ON s.sanpham_id = htk.sanpham_id
WHERE htk.soluong > 10;

INNER JOIN মূল সাবকোয়েরির চেয়ে বেশি কার্যকর ফলাফল দেয়। এটি খেয়াল রাখা গুরুত্বপূর্ণ যে সব কোয়েরি JOIN দিয়ে রি-রাইট করা যায় না।

FROM ক্লজে সাবকোয়েরি

SELECT nhacung.nhacung_ten, truyvancon1.tong_sl
FROM nhacung,
 (SELECT nhacung_id, SUM(donhang.soluong) AS tong_sl
 FROM donhang
 GROUP BY nhacung_id) truyvancon1
WHERE truyvancon1.nhacung_id = nhacung.nhacung_id;

এই উদাহরণে FROM ক্লজে সাবকোয়েরি নিচের মতো তৈরি করা হয়েছে:

(SELECT nhacung_id, SUM(donhang.soluong) AS tong_sl
FROM donhang
GROUP BY nhacung_id) truyvancon1

এই সাবকোয়েরির সাথে truyvancon1 অ্যালিয়াস যুক্ত। এই নামটি এই সাবকোয়েরি বা এর যেকোনো ইনফরমেশন ফিল্ড রেফার করতে ব্যবহার করা হবে।

SELECT ক্লজে সাবকোয়েরি

সাধারণত SELECT ক্লজে সাবকোয়েরি সেট করা হয় SUM, COUNT, MIN বা MAX যেন যোগফল ফাংশন দিয়ে ক্যালকুলেট করা যায় কিন্তু মূল কোয়েরিতে কাউন্ট না করা হয়।

SELECT n1.ho, n1.ten,
 (SELECT MAX(luong)
 FROM nhanvien n2
 WHERE n1.nhanvien_id = n2.nhanvien_id) truyvancon2
FROM nhanvien n1;

উপরের উদাহরণে তৈরি সাবকোয়েরি নিচের মতো:

(SELECT MAX(luong)
FROM nhanvien n2
WHERE n1.nhanvien_id = n2.nhanvien_id) truyvancon2

এই সাবকোয়েরির সাথে truyvancon2 অ্যালিয়াস যুক্ত। এই নামটি এই সাবকোয়েরি বা এর যেকোনো ইনফরমেশন ফিল্ড রেফার করতে ব্যবহার করা হবে।

SELECT ক্লজে সাবকোয়েরি রাখার টিপসটি ব্যবহার করা হয় কারণ সাবকোয়েরি একক মান রিটার্ন করে। তাই SUM, COUNT, MIN বা MAX যেন যোগফল ফাংশন গুলো সাবকোয়েরিতে اکثر ব্যবহৃত হয়।

  1. SQL Server-এ INTERSECT অপারেটর

  2. MS SQL Server-এ ডেটাবেস নির্বাচন

  3. MS SQL Server কী?

  4. SQL Server Query Store মাস্টার করুন: কোয়েরি পারফরম্যান্স ক্যাপচার, বিশ্লেষণ ও সমাধান