सारांश :इस ट्यूटोरियल में, आप अधिक पठनीय और जटिल क्वेरी बनाने के लिए SQLite सबक्वेरी के बारे में जानेंगे।
SQLite सबक्वेरी का परिचय
एक सबक्वेरी एक SELECT
है एक अन्य कथन में निहित कथन। निम्नलिखित कथन देखें।
SELECT column_1
FROM table_1
WHERE column_1 = (
SELECT column_1
FROM table_2
);
Code language: SQL (Structured Query Language) (sql)
निम्न क्वेरी बाहरी क्वेरी है :
SELECT column_1
FROM table_1
WHERE colum_1 =
Code language: SQL (Structured Query Language) (sql)
और निम्न क्वेरी सबक्वायरी है ।
(SELECT column_1
FROM table_2)
Code language: SQL (Structured Query Language) (sql)
सबक्वेरी संलग्न करने के लिए आपको कोष्ठकों की एक जोड़ी का उपयोग करना चाहिए। ध्यान दें कि आप एक निश्चित गहराई के साथ किसी अन्य सबक्वेरी के अंदर एक सबक्वेरी को नेस्ट कर सकते हैं।
आम तौर पर, एक सबक्वेरी एक एकल पंक्ति को परमाणु मान के रूप में लौटाता है, हालांकि यह IN
के साथ मानों की तुलना करने के लिए कई पंक्तियों को वापस कर सकता है ऑपरेटर।
आप SELECT
. में एक सबक्वेरी का उपयोग कर सकते हैं , FROM
, WHERE
, और JOIN
खंड।
SQLite सबक्वेरी उदाहरण
हम tracks
. का उपयोग करेंगे और albums
प्रदर्शन के लिए नमूना डेटाबेस से तालिकाएँ।
1) SQLite सबक्वेरी WHERE
. में खंड उदाहरण
आप खोज शर्त के रूप में एक साधारण सबक्वेरी का उपयोग कर सकते हैं। उदाहरण के लिए, निम्न कथन एल्बम के सभी ट्रैक Let There Be Rock
. शीर्षक के साथ लौटाता है
SELECT trackid,
name,
albumid
FROM tracks
WHERE albumid = (
SELECT albumid
FROM albums
WHERE title = 'Let There Be Rock'
);
Code language: SQL (Structured Query Language) (sql)
सबक्वेरी 'Let There Be Rock'
. शीर्षक के साथ एल्बम की आईडी लौटाती है . albumid
. की तुलना करने के लिए क्वेरी बराबर ऑपरेटर (=) का उपयोग करती है albumid
. के साथ सबक्वेरी द्वारा लौटाया गया tracks
. में टेबल।
यदि सबक्वेरी कई मान लौटाती है, तो आप IN
. का उपयोग कर सकते हैं मूल्य के एक सेट के विरुद्ध एकल मान के अस्तित्व की जाँच करने के लिए ऑपरेटर।
निम्नलिखित देखें employees
और customers
नमूना डेटाबेस में तालिका:
उदाहरण के लिए, निम्न क्वेरी उन ग्राहकों को लौटाती है जिनके बिक्री प्रतिनिधि कनाडा में हैं।
SELECT customerid,
firstname,
lastname
FROM customers
WHERE supportrepid IN (
SELECT employeeid
FROM employees
WHERE country = 'Canada'
);
Code language: SQL (Structured Query Language) (sql)
सबक्वेरी कनाडा में स्थित कर्मचारियों की आईडी की एक सूची देता है। बाहरी क्वेरी IN
. का उपयोग करती है सूची में बिक्री प्रतिनिधि आईडी रखने वाले ग्राहकों को खोजने के लिए ऑपरेटर।
2) SQLite सबक्वेरी में FROM
खंड उदाहरण
कभी-कभी आप एक कॉलम में कई बार एग्रीगेट फंक्शन लागू करना चाहते हैं। उदाहरण के लिए, पहले आप किसी एल्बम के आकार का योग करना चाहते हैं और फिर सभी एल्बमों के औसत आकार की गणना करना चाहते हैं। आप निम्न क्वेरी के साथ आ सकते हैं।
SELECT AVG(SUM(bytes)
FROM tracks
GROUP BY albumid;
Code language: SQL (Structured Query Language) (sql)
यह क्वेरी मान्य नहीं है।
इसे ठीक करने के लिए, आप FROM
. में एक सबक्वेरी का उपयोग कर सकते हैं खंड इस प्रकार है:
SELECT
AVG(album.size)
FROM
(
SELECT
SUM(bytes) SIZE
FROM
tracks
GROUP BY
albumid
) AS album;
Code language: SQL (Structured Query Language) (sql)
AVG(album.size) --------------- 338288920.317
इस मामले में, SQLite सबसे पहले FROM
. में सबक्वेरी को निष्पादित करता है खंड और एक परिणाम सेट देता है। फिर, SQLite बाहरी क्वेरी में व्युत्पन्न तालिका के रूप में इस परिणाम सेट का उपयोग करता है।
SQLite सहसंबद्ध सबक्वेरी
आपके द्वारा अब तक देखी गई सभी उपश्रेणियों को स्वतंत्र रूप से निष्पादित किया जा सकता है। दूसरे शब्दों में, यह बाहरी क्वेरी पर निर्भर नहीं करता है।
सहसंबद्ध सबक्वेरी एक सबक्वेरी है जो बाहरी क्वेरी के मानों का उपयोग करती है। एक सामान्य उपश्रेणी के विपरीत, एक सहसंबद्ध उपश्रेणी को स्वतंत्र रूप से क्रियान्वित नहीं किया जा सकता है।
सहसंबद्ध सबक्वेरी कुशल नहीं है क्योंकि बाहरी क्वेरी द्वारा संसाधित प्रत्येक पंक्ति के लिए इसका मूल्यांकन किया जाता है।
निम्न क्वेरी 10MB से कम आकार वाले एल्बमों को वापस करने के लिए एक सहसंबद्ध उपश्रेणी का उपयोग करती है।
SELECT albumid,
title
FROM albums
WHERE 10000000 > (
SELECT sum(bytes)
FROM tracks
WHERE tracks.AlbumId = albums.AlbumId
)
ORDER BY title;
Code language: SQL (Structured Query Language) (sql)
क्वेरी कैसे काम करती है।
- बाहरी क्वेरी में संसाधित प्रत्येक पंक्ति के लिए, सहसंबद्ध सबक्वेरी
SUM
का उपयोग करके वर्तमान एल्बम से संबंधित ट्रैक से एल्बम के आकार की गणना करती है समारोह। - विधेय
WHERE
. में क्लॉज उन एल्बमों को फ़िल्टर करता है जिनका आकार 10MB (10000000 बाइट्स) से अधिक या बराबर होता है।
SELECT
में SQLite सहसंबद्ध सबक्वेरी खंड उदाहरण
निम्न क्वेरी SELECT
. में एक सहसंबद्ध सबक्वेरी का उपयोग करती है एक एल्बम में ट्रैक की संख्या वापस करने के लिए खंड।
SELECT albumid,
title,
(
SELECT count(trackid)
FROM tracks
WHERE tracks.AlbumId = albums.AlbumId
)
tracks_count
FROM albums
ORDER BY tracks_count DESC;
Code language: SQL (Structured Query Language) (sql)
इस ट्यूटोरियल में, हमने आपको सबक्वेरी से परिचित कराया है और टेबल से डेटा चुनने के लिए क्वेरी में सबक्वेरी का उपयोग करने के विभिन्न तरीके दिखाए हैं।