पायथन में संबंधित टेबल्स से डेटा प्राप्त करना
आइए एक क्वेरी बनाते हैं जो सभी उपयोगकर्ताओं को उनके शहरों के साथ प्राप्त करेगी। इसके लिए
LEFT
JOIN कमांड की आवश्यकता होगी:
इसका सिंटैक्स निम्नलिखित प्रकार से दिखता है:
SELECT fields FROM table_name
LEFT JOIN related_table_name ON join_condition
WHERE selection_condition
आइए इस कमांड के सिंटैक्स के अलग-अलग हिस्सों को समझते हैं।
फ़ील्ड्स
चूंकि डेटा कई टेबल्स से चुना जा रहा है,
तो * के माध्यम से सभी फ़ील्ड्स को चुनना
काम नहीं करेगा। निम्नलिखित क्वेरी केवल मुख्य टेबल से फ़ील्ड्स
चुनेगी, लेकिन संबंधित टेबल से नहीं:
SELECT *
ताकि डेटा सभी टेबल्स से चुना जाए, इसके लिए
* से पहले टेबल का नाम निर्दिष्ट करना
आवश्यक है:
SELECT users.*, cities.*
या तो आवश्यक फ़ील्ड्स को उनके सामने टेबल का नाम निर्दिष्ट करके सूचीबद्ध किया जा सकता है:
SELECT users.name, cities.name
इन दोनों तरीकों में एक समस्या है। बात यह है कि यदि टेबल्स में फ़ील्ड्स के नाम समान हैं, तो Python की सरणी में नामों का टकराव होगा और केवल एक ही फ़ील्ड जीतेगा, और दूसरा नहीं होगा।
समस्या के समाधान के लिए टकराव वाले
नामों को as कमांड के माध्यम से
बदलना होगा:
SELECT users.name, cities.name as city_name
संबंध
ON कमांड के बाद हमें उन दोनों टेबल्स की फ़ील्ड्स
निर्दिष्ट करनी होंगी, जिनके माध्यम से संबंध स्थापित होता है।
हमारे मामले में यह शहरों वाली टेबल से id
फ़ील्ड और उपयोगकर्ताओं वाली टेबल से city_id
फ़ील्ड होगी:
ON cities.id=users.city_id
क्वेरी
अंततः, वह क्वेरी जो उपयोगकर्ताओं को उनके शहरों के साथ प्राप्त करेगी, निम्नलिखित प्रकार से दिखेगी:
SELECT
users.name, cities.name as city_name
FROM
users
LEFT JOIN cities ON cities.id=users.city_id
व्यावहारिक कार्य
मान लीजिए आपके पास उत्पादों की एक टेबल और उनकी श्रेणियों की एक टेबल है। एक क्वेरी लिखें, जो उत्पादों के नाम उनकी श्रेणियों के साथ प्राप्त करे।