SQL Server में सबक्वेरी (उप-प्रश्न)
निम्नलिखित लेख आपको SQL Server में सबक्वेरी का उपयोग करना सिखाएगा, साथ ही सिंटैक्स और उदाहरण भी देगा।
SQL में सबक्वेरी क्या है?
SQL Server में, एक सबक्वेरी एक ऐसा क्वेरी है जो किसी अन्य क्वेरी के अंदर रहता है। आप SQL कमांड में क्वेरी बना सकते हैं। ये सबक्वेरी WHERE, FROM या SELECT क्लॉज में हो सकते हैं।
नोट:
- सबक्वेरी को INNER QUERY या INNER SELECT भी कहा जाता है।
- सबक्वेरी को समाहित करने वाला मुख्य क्वेरी 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 टेबल से उन sanpham_id मानों को ढूंढने की अनुमति देती है जिनकी संख्या 10 से अधिक है। फिर सबक्वेरी का उपयोग 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 जैसे योग फ़ंक्शंस अक्सर सबक्वेरी में उपयोग किए जाते हैं।