SQLite
 sql >> डेटाबेस >  >> RDS >> SQLite

SQLite सबक्वेरी

सारांश :इस ट्यूटोरियल में, आप अधिक पठनीय और जटिल क्वेरी बनाने के लिए 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)

इस ट्यूटोरियल में, हमने आपको सबक्वेरी से परिचित कराया है और टेबल से डेटा चुनने के लिए क्वेरी में सबक्वेरी का उपयोग करने के विभिन्न तरीके दिखाए हैं।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एक CSV फ़ाइल में SQLite क्वेरी परिणाम निर्यात करें

  2. SQLite में गणना () परिणामों से डुप्लिकेट निकालें

  3. क्या मुझे अपने डेटाबेस में प्रत्येक तालिका के लिए SQLiteOpenHelper विरासत में मिली कक्षा बनानी चाहिए?

  4. SQLite में दो टाइमस्टैम्प के बीच अंतर की गणना कैसे करें

  5. प्रत्येक n मिनट में किसी फ़ंक्शन को कॉल करने के लिए टाइमर कैसे सेट करें?