Python හි දත්තවල ඥාති සම්බන්ධතා

අප ඉදිරියේ පියවරුන් සහ පුතුන් ගබඩා කිරීමේ කාර්යයක් ඇතැයි සිතන්න. සෑම පියෙකුටම පුතෙකු එක් අයෙකු පමණක් තිබිය හැකිය, පුතෙකුටත් අනුව ඔහුට එක් පුතෙකු පමණක් තිබිය හැකිය.

දත්ත ගබඩා කරන්නේ කෙසේදැයි සිතා බැලිය යුතුය. හිතට එන පළමු අදහස වන්නේ වගු දෙකක් සෑදීමයි: පියවරුන් සඳහා parents සහ පුතුන් සඳහා sons. පසුව මෙම වගු සමහර ක්ෂේත්රයකින් සම්බන්ධ කරන්න: son_id හෝ parent_id.

කෙසේ වෙතත්, මෙය හොඳ අදහසක් නොවේ - එකම පුද්ගලයෙකුට එකවරම පියෙකු සහ පුතෙකු විය හැකිය - ඔහුව වගු දෙකේම ගබඩා කිරීමට සිදුවනු ඇත, එය අපහසු ය, වැඩි ඉඩක් ගනී සහ දෝෂ සහිත වීමට පහසු ය.

වඩා හොඳ විකල්පය වන්නේ වගුව තමන් සමඟම සම්බන්ධ කිරීමයි: අපි users වගුවක් සාදමු, එහි සියලුම භාවිතාකරුවන් ගබඩා කර එක් එක් අයට son_id ක්ෂේත්රයක් සාදමු, එහි එම වගුවෙන්ම පුතුගේ id ගබඩා කෙරේ:

users
id name son_id
1 user1 2
2 user2 3
3 user3 null

විමසුම්

දැන් අපි භාවිතාකරුවා ඔහුගේ පුතා සමඟම ලබා ගන්න විමසුමක් ලියමු.

පළමුව, අපි භාවිතාකරුවන් ලබා ගනිමු:

sqlSELECT
  *
FROM
  users

දැන් අපි භාවිතාකරුවන්ට ඔවුන්ගේ පුතුන් join කරමු. අපි වගුව තමන් සමඟම join කරන නිසා, අපි එය නැවත නම් කිරීම සිදු කළ යුතුය:

sqlLEFT JOIN users as sons

දැන් අපට ප්රධාන වගුව සහ නැවත නම් කළ වගුව අතර සම්බන්ධතාවය සඳහන් කළ හැකිය:

sqlLEFT JOIN users as sons ON sons.id=users.son_id

දැන් අපි ක්ෂේත්ර සඳහන් කරමු:

sqlSELECT
  users.name as user_name, sons.name as son_name

සියල්ල එකට එකතු කර පහත විමසුම ලබා ගනිමු:

sqlSELECT
  users.name as user_name, sons.name as son_name
FROM
  users
LEFT JOIN users as sons ON sons.id=users.son_id

ප්‍රායෝගික කාර්යයන්

Задание 1

අපට වර්ග කිහිපයක් ඇතැයි සිතන්න. සෑම වර්ගයක්ම මව් වර්ගයකට අයත් විය හැකිය, එය අනුක්‍රමයෙන් තම මව් වර්ගයට අයත් වන අතර එය එසේම ඉදිරියට යයි. ගබඩා කිරීමේ ව්‍යුහය විස්තර කරන්න.

Задание 2

වර්ගයක් එහි මව් වර්ගය සමඟ ලබා ගන්න විමසුමක් ලියන්න.

Задание 3

වර්ගයක් එහි මව් වර්ගය සහ මුතුන් මිත්තන්ගේ වර්ගය සමඟ ලබා ගන්න විමසුමක් ලියන්න.

Задание 4

වර්ගයක් එහි මව් වර්ගය, මුතුන් මිත්තන්ගේ වර්ගය සහ මුතුන් මිත්තන්ගේ මුතුන් මිත්තන්ගේ වර්ගය සමඟ ලබා ගන්න විමසුමක් ලියන්න.