निम्न लेख आपको सिंटैक्स और उदाहरणों के साथ SQL सर्वर में उप-प्रश्नों का उपयोग करने का तरीका दिखाएगा।
एसक्यूएल (सबक्वेरी) में सबक्वेरी क्या है?
SQL सर्वर में, एक सबक्वेरी एक क्वेरी है जो किसी अन्य क्वेरी में रहती है। आप SQL कमांड में क्वेरी बना सकते हैं। ये सबक्वेरी WHERE, FROM या 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);
सबक्वायरी हैंगटनखो टेबल से 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 मूल सबक्वेरी की तुलना में अधिक कुशलता से वापस आएगा। यह भी ध्यान रखना महत्वपूर्ण है कि जॉइन द्वारा कोई प्रश्न फिर से नहीं लिखा जाता है।
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 truyvanco
n1.nhacung_id = nhacung.nhacung_id;
इस उदाहरण में हमने FROM क्लॉज में सबक्वेरी इस प्रकार बनाई है:
(SELECT nhacung_id, SUM(donhang.soluong) AS tong_sl
FROM donhang
GROUP BY nhacung
_id) truyvancon1
यह सबक्वेरी उर्फ truyvancon1 से भी जुड़ी है। यह इस सबक्वेरी या इसके किसी सूचना क्षेत्र को संदर्भित करने के लिए इस्तेमाल किया जाने वाला नाम होगा।
चुनें खंड
आमतौर पर सबक्वेरी को SUM, COUNT, MIN या MAX जैसे योग फंक्शन द्वारा परिकलित करने के लिए SELECT क्लॉज में सेट किया जाता है, लेकिन मुख्य क्वेरी में गिनती नहीं करना चाहते।
पी>SELECT n1.ho, n1.ten,
(SELECT MAX(luong)
FROM nhanvien n2
WHERE n1.nhanvien_id = n2.nhanvien_id) truyvancon2
FROM nhanvien n1
;
उपरोक्त उदाहरण में बनाई गई सबक्वेरी नीचे दी गई है
(SELECT MAXong)
FROM nhanvien n2
WHERE n1.nhanvie
n_id = n2.nhanvien_id) truyvancon2
यह सबक्वेरी उर्फ truyvancon2 से भी जुड़ी है। यह इस सबक्वेरी या इसके किसी सूचना क्षेत्र को संदर्भित करने के लिए इस्तेमाल किया जाने वाला नाम होगा।
उपश्रेणियों को SELECT क्लॉज में रखने की ट्रिक का उपयोग किया जाता है क्योंकि सबक्वेरी एकल मान लौटाती है। यही कारण है कि सम फंक्शन जैसे SUM, COUNT, MIN या MAX अक्सर सबक्वेरी में उपयोग किए जाते हैं।