დაკავშირებული ცხრილების ჯაჭვი Python-ში
დავუშვათ, ახლა მომხმარებლები ცხოვრობენ გარკვეულ ქალაქებში, და ეს ქალაქები მდებარეობს სხვადასხვა ქვეყანაში. ამ შემთხვევაში შესანახად ჩვენ დაგვჭირდება უკვე სამი ცხრილი: მომხმარებლები იქნებიან დაკავშირებული ქალაქებთან, ხოლო ქალაქები - ქვეყნებთან. ამ შემთხვევაში ჩვენ არ დაგვჭირდება მომხმარებლების ქვეყნებთან დამაკავშირებელი ველი - ბოლოს და ბოლოს, მომხმარებლები მაინც იქნებიან დაკავშირებული ქვეყნებთან ქალაქებისა და ქვეყნების კავშირის მეშვეობით.
შევხედოთ ჩვენს ცხრილებს. ცხრილი ქვეყნებით:
| 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
პრაქტიკული ამოცანები
დავუშვათ, პროდუქტები ეკუთვნის გარკვეულ ქვეკატეგორიას, ხოლო ქვეკატეგორიები ეკუთვნის გარკვეულ კატეგორიას. აღწერეთ შენახვის სტრუქტურა.
დაწერეთ მოთხოვნა, რომელიც მოიხიბლს პროდუქტებს, მათ ქვეკატეგორიებთან და კატეგორიებთან ერთად.
დაწერეთ მოთხოვნა, რომელიც მოიხიბლს ქვეკატეგორიებს მათ კატეგორიებთან ერთად.