සම්බන්ධිත වගු දාමය
දැන් භාවිතා කරන්නන් නිශ්චිත නගරවල ජීවත් වන අතර, මෙම නගර විවිධ රටවල පිහිටා ඇතැයි සිතමු. එවැනි අවස්ථාවකදී ගබඩා කිරීම සඳහා අපට වගු තුනක් අවශ්ය වනු ඇත: භාවිතා කරන්නන් නගර සමඟ සම්බන්ධ වනු ඇත, නගර - රටවල් සමඟ. මෙම අවස්ථාවේදී අපට භාවිතා කරන්නන් රටවල් සමඟ සම්බන්ධ කිරීම සඳහා ක්ෂේත්රයක් අවශ්ය නොවේ - භාවිතා කරන්නන් නගර සහ රටවල් අතර සම්බන්ධය හරහා රටවල් සමඟ ඇති සම්බන්ධතාවය නිසා.
අපගේ වගු දෙස බලමු. රටවල් සමඟ වගුව:
| 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 |
විමසුම්
භාවිතා කරන්නන් ඔවුන්ගේ නගර සහ රටවල් සමඟ ලබා ගැනීම සඳහා, අපට ද්විත්ව සම්බන්ධකයන් (joins) කිරීමට සිදුවනු ඇත: පළමුවැන්න භාවිතා කරන්නන්ට නගර සම්බන්ධ කරන අතර, දෙවැන්න - නගරවලට රටවල් සම්බන්ධ කරයි:
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
ප්රායෝගික කාර්යයන්
භාණ්ඩ නිශ්චිත උපප්රවර්ගයකට අයත් වන අතර, උපප්රවර්ග නිශ්චිත ප්රවර්ගයකට අයත් වේ යැයි සිතමු. ගබඩා ව්යුහය විස්තර කරන්න.
භාණ්ඩ, ඒවායේ උපප්රවර්ග සහ ප්රවර්ග සමඟ ලබා ගන්නා විමසුමක් ලියන්න.
උපප්රවර්ග ඒවායේ ප්රවර්ග සමඟ ලබා ගන්නා විමසුමක් ලියන්න.