श्रृंखलाबद्ध लिंक्ड टेबल्स

अब मान लीजिए कि यूजर特定的 शहरों में रहते हैं, और ये शहर अलग-अलग देशों में स्थित हैं। ऐसे में स्टोरेज के लिए हमें तीन टेबल्स की आवश्यकता होगी: यूजर शहरों से लिंक्ड होंगे, और शहर - देशों से। साथ ही, हमें यूजर को देशों से लिंक करने वाले फ़ील्ड की आवश्यकता नहीं होगी - क्योंकि यूजर वैसे भी शहरों और देशों के बीच लिंक के माध्यम से देशों से जुड़े होंगे।

आइए हमारी टेबल्स पर एक नज़र डालें। देशों वाली टेबल:

countries
id name
1 country1
2 country2

शहरों वाली टेबल:

cities
id name country_id
1 city1 1
2 city2 1
3 city3 2

यूजर वाली टेबल अपरिवर्तित रहेगी:

users
id name city_id
1 user1 1
2 user2 1
3 user3 2
4 user4 1
5 user5 3
6 user6 2

क्वेरीज़

यूजर को उनके शहरों और देशों के साथ प्राप्त करने के लिए, हमें दो जॉइन करने होंगे: पहला यूजर से शहरों को जोड़ेगा, और दूसरा - शहरों से देशों को:

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

प्रायोगिक कार्य

Задание 1

मान लीजिए कि उत्पाद एक特定 उपश्रेणी से संबंधित हैं, और उपश्रेणियाँ एक特定 श्रेणी से संबंधित हैं। स्टोरेज संरचना लिखें।

Задание 2

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

Задание 3

एक क्वेरी लिखें जो उपश्रेणियों को उनकी श्रेणियों के साथ प्राप्त करे।