पायथन में संबंधित टेबल्स से डेटा प्राप्त करना

आइए एक क्वेरी बनाते हैं जो सभी उपयोगकर्ताओं को उनके शहरों के साथ प्राप्त करेगी। इसके लिए LEFT JOIN कमांड की आवश्यकता होगी:

इसका सिंटैक्स निम्नलिखित प्रकार से दिखता है:

sqlSELECT fields FROM table_name
  LEFT JOIN related_table_name ON join_condition
WHERE selection_condition

आइए इस कमांड के सिंटैक्स के अलग-अलग हिस्सों को समझते हैं।

फ़ील्ड्स

चूंकि डेटा कई टेबल्स से चुना जा रहा है, तो * के माध्यम से सभी फ़ील्ड्स को चुनना काम नहीं करेगा। निम्नलिखित क्वेरी केवल मुख्य टेबल से फ़ील्ड्स चुनेगी, लेकिन संबंधित टेबल से नहीं:

sqlSELECT *

ताकि डेटा सभी टेबल्स से चुना जाए, इसके लिए * से पहले टेबल का नाम निर्दिष्ट करना आवश्यक है:

sqlSELECT users.*, cities.*

या तो आवश्यक फ़ील्ड्स को उनके सामने टेबल का नाम निर्दिष्ट करके सूचीबद्ध किया जा सकता है:

sqlSELECT users.name, cities.name

इन दोनों तरीकों में एक समस्या है। बात यह है कि यदि टेबल्स में फ़ील्ड्स के नाम समान हैं, तो Python की सरणी में नामों का टकराव होगा और केवल एक ही फ़ील्ड जीतेगा, और दूसरा नहीं होगा।

समस्या के समाधान के लिए टकराव वाले नामों को as कमांड के माध्यम से बदलना होगा:

sqlSELECT users.name, cities.name as city_name

संबंध

ON कमांड के बाद हमें उन दोनों टेबल्स की फ़ील्ड्स निर्दिष्ट करनी होंगी, जिनके माध्यम से संबंध स्थापित होता है। हमारे मामले में यह शहरों वाली टेबल से id फ़ील्ड और उपयोगकर्ताओं वाली टेबल से city_id फ़ील्ड होगी:

sqlON cities.id=users.city_id

क्वेरी

अंततः, वह क्वेरी जो उपयोगकर्ताओं को उनके शहरों के साथ प्राप्त करेगी, निम्नलिखित प्रकार से दिखेगी:

sqlSELECT
  users.name, cities.name as city_name
FROM
  users
LEFT JOIN cities ON cities.id=users.city_id

व्यावहारिक कार्य

Задание 1

मान लीजिए आपके पास उत्पादों की एक टेबल और उनकी श्रेणियों की एक टेबल है। एक क्वेरी लिखें, जो उत्पादों के नाम उनकी श्रेणियों के साथ प्राप्त करे।