श्रृंखलाबद्ध लिंक्ड टेबल्स
अब मान लीजिए कि यूजर特定的 शहरों में रहते हैं, और ये शहर अलग-अलग देशों में स्थित हैं। ऐसे में स्टोरेज के लिए हमें तीन टेबल्स की आवश्यकता होगी: यूजर शहरों से लिंक्ड होंगे, और शहर - देशों से। साथ ही, हमें यूजर को देशों से लिंक करने वाले फ़ील्ड की आवश्यकता नहीं होगी - क्योंकि यूजर वैसे भी शहरों और देशों के बीच लिंक के माध्यम से देशों से जुड़े होंगे।
आइए हमारी टेबल्स पर एक नज़र डालें। देशों वाली टेबल:
| id | name |
|---|---|
| 1 | country1 |
| 2 | country2 |
शहरों वाली टेबल:
| id | name | country_id |
|---|---|---|
| 1 | city1 | 1 |
| 2 | city2 | 1 |
| 3 | city3 | 2 |
यूजर वाली टेबल अपरिवर्तित रहेगी:
| id | name | city_id |
|---|---|---|
| 1 | user1 | 1 |
| 2 | user2 | 1 |
| 3 | user3 | 2 |
| 4 | user4 | 1 |
| 5 | user5 | 3 |
| 6 | user6 | 2 |
क्वेरीज़
यूजर को उनके शहरों और देशों के साथ प्राप्त करने के लिए, हमें दो जॉइन करने होंगे: पहला यूजर से शहरों को जोड़ेगा, और दूसरा - शहरों से देशों को:
SELECT
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
प्रायोगिक कार्य
मान लीजिए कि उत्पाद एक特定 उपश्रेणी से संबंधित हैं, और उपश्रेणियाँ एक特定 श्रेणी से संबंधित हैं। स्टोरेज संरचना लिखें।
एक क्वेरी लिखें जो उत्पादों को, उनकी उपश्रेणियों और श्रेणियों के साथ प्राप्त करे।
एक क्वेरी लिखें जो उपश्रेणियों को उनकी श्रेणियों के साथ प्राप्त करे।