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