सारांश :इस ट्यूटोरियल में, आप दो या दो से अधिक तालिकाओं से डेटा क्वेरी करने के लिए विभिन्न प्रकार के SQLite जॉइन के बारे में जानेंगे।
प्रदर्शन के लिए, हम artists
. का उपयोग करेंगे और albums
नमूना डेटाबेस से तालिकाएँ।
एक कलाकार के पास शून्य या कई एल्बम हो सकते हैं जबकि एक एल्बम एक कलाकार का होता है।
दोनों artists
. से डेटा क्वेरी करने के लिए और albums
आपके द्वारा उपयोग की जाने वाली तालिकाएँ INNER JOIN
. का उपयोग कर सकती हैं , LEFT JOIN
, या CROSS JOIN
खंड। प्रत्येक जॉइन क्लॉज यह निर्धारित करता है कि SQLite एक टेबल से डेटा को दूसरी टेबल में पंक्तियों के साथ मिलान करने के लिए कैसे उपयोग करता है।
ध्यान दें कि SQLite सीधे RIGHT JOIN
का समर्थन नहीं करता है और FULL OUTER JOIN
।
SQLite INNER JOIN
निम्नलिखित कथन एल्बम के शीर्षक और उनके कलाकारों के नाम लौटाता है:
SELECT
Title,
Name
FROM
albums
INNER JOIN artists
ON artists.ArtistId = albums.ArtistId;
Code language: SQL (Structured Query Language) (sql)
यहाँ आंशिक आउटपुट है:
इस उदाहरण में, INNER JOIN
खंड albums
. से प्रत्येक पंक्ति से मेल खाता है artists
. से प्रत्येक पंक्ति के साथ तालिका शामिल होने की स्थिति के आधार पर तालिका (artists.ArtistId = albums.ArtistId
) ON
. के बाद निर्दिष्ट कीवर्ड।
यदि शामिल होने की स्थिति का मूल्यांकन सही (या 1) पर होता है, तो दोनों albums
. से पंक्तियों के स्तंभ और artists
परिणाम सेट में टेबल शामिल हैं।
यह क्वेरी तालिका उपनामों का उपयोग करती है (l
albums
. के लिए टेबल और r
artists
. के लिए तालिका) क्वेरी को छोटा करने के लिए:
SELECT
l.Title,
r.Name
FROM
albums l
INNER JOIN artists r ON
r.ArtistId = l.ArtistId;
Code language: SQL (Structured Query Language) (sql)
यदि सम्मिलित तालिकाओं के कॉलम नाम समान हैं, उदाहरण के लिए, ArtistId
, आप USING
. का उपयोग कर सकते हैं सिंटैक्स इस प्रकार है:
SELECT
Title,
Name
FROM
albums
INNER JOIN artists USING(ArtistId);
Code language: SQL (Structured Query Language) (sql)
क्लॉज USING(ArtistId)
ON artists.ArtistId = albums.ArtistId
।
SQLite LEFT JOIN
यह कथन artists
. से कलाकारों के नाम और एल्बम के शीर्षक का चयन करता है और albums
LEFT JOIN
का उपयोग कर टेबल खंड:
SELECT
Name,
Title
FROM
artists
LEFT JOIN albums ON
artists.ArtistId = albums.ArtistId
ORDER BY Name;
Code language: SQL (Structured Query Language) (sql)
यहाँ आउटपुट है:
LEFT JOIN
क्लॉज बाएं टेबल से शुरू होने वाले डेटा का चयन करता है (artists
) और दाएँ तालिका में मेल खाने वाली पंक्तियाँ (albums
) शामिल होने की स्थिति के आधार पर (artists.ArtistId = albums.ArtistId
) ।
लेफ्ट जॉइन artists
. से सभी पंक्तियों को लौटाता है तालिका (या बाईं तालिका) और albums
. से मेल खाने वाली पंक्तियाँ टेबल (या दायां टेबल)।
यदि बाईं तालिका की एक पंक्ति में दाईं तालिका में मेल खाने वाली पंक्ति नहीं है, तो SQLite में बाईं तालिका में पंक्तियों के स्तंभ और NULL
शामिल हैं। दाएँ तालिका के स्तंभों के लिए।
INNER JOIN
के समान खंड, आप USING
. का उपयोग कर सकते हैं शामिल होने की स्थिति के लिए सिंटैक्स निम्नानुसार है:
SELECT
Name,
Title
FROM
artists
LEFT JOIN albums USING (ArtistId)
ORDER BY
Name;
Code language: SQL (Structured Query Language) (sql)
अगर आप ऐसे कलाकारों को ढूंढना चाहते हैं जिनके पास कोई एल्बम नहीं है, तो आप WHERE
जोड़ सकते हैं खंड जैसा कि निम्नलिखित प्रश्न में दिखाया गया है:
SELECT
Name,
Title
FROM
artists
LEFT JOIN albums ON
artists.ArtistId = albums.ArtistId
WHERE Title IS NULL
ORDER BY Name;
Code language: SQL (Structured Query Language) (sql)
यह चित्र आंशिक आउटपुट दिखाता है:
आम तौर पर, इस प्रकार की क्वेरी आपको उन पंक्तियों को खोजने की अनुमति देती है जो बाईं तालिका में उपलब्ध हैं, लेकिन दाईं तालिका में संबंधित पंक्तियाँ नहीं हैं।
ध्यान दें कि LEFT JOIN
और LEFT OUTER JOIN
समानार्थी हैं।
SQLite CROSS JOIN
CROSS JOIN
क्लॉज सम्मिलित तालिकाओं से पंक्तियों का कार्टेशियन उत्पाद बनाता है।
INNER JOIN
के विपरीत और LEFT JOIN
खंड, एक CROSS JOIN
शामिल होने की कोई शर्त नहीं है। यहाँ CROSS JOIN
का मूल सिंटैक्स दिया गया है खंड:
SELECT
select_list
FROM table1
CROSS JOIN table2;
Code language: SQL (Structured Query Language) (sql)
CROSS JOIN
पहली तालिका से प्रत्येक पंक्ति को जोड़ती है (table1
) दूसरी तालिका से प्रत्येक पंक्ति के साथ (table2
) परिणाम सेट बनाने के लिए।
यदि पहली तालिका में N
है पंक्तियाँ, दूसरी तालिका में M
है पंक्तियाँ, अंतिम परिणाम में NxM
होगा पंक्तियाँ।
CROSS JOIN
का एक व्यावहारिक उदाहरण क्लॉज आगे की प्रक्रिया के लिए प्रारंभिक डेटा सेट बनाने के लिए डेटा के दो सेटों को संयोजित करना है। उदाहरण के लिए, आपके पास उत्पादों और महीनों की एक सूची है, और आप एक योजना बनाना चाहते हैं कि आप कौन से उत्पाद बेच सकते हैं।
निम्न स्क्रिप्ट products
बनाती है और calendars
टेबल:
CREATE TABLE products(
product text NOT null
);
INSERT INTO products(product)
VALUES('P1'),('P2'),('P3');
CREATE TABLE calendars(
y int NOT NULL,
m int NOT NULL
);
INSERT INTO calendars(y,m)
VALUES
(2019,1),
(2019,2),
(2019,3),
(2019,4),
(2019,5),
(2019,6),
(2019,7),
(2019,8),
(2019,9),
(2019,10),
(2019,11),
(2019,12);
Code language: SQL (Structured Query Language) (sql)
यह क्वेरी CROSS JOIN
का उपयोग करती है महीनों के साथ उत्पादों को संयोजित करने का खंड:
SELECT *
FROM products
CROSS JOIN calendars;
Code language: SQL (Structured Query Language) (sql)
यहाँ आउटपुट है:
इस ट्यूटोरियल में, आपने विभिन्न प्रकार के SQLite जॉइन सीखे हैं जो आपको कई तालिकाओं से क्वेरी करने की अनुमति देते हैं।