PHP හි දත්තවල ඥාති සබඳතා
අප ඉදිරියේ පියවරුන් සහ පුතුන් ගබඩා කිරීමේ කාර්යයක් ඇතැයි සිතමු. සෑම පියෙකුටම එක් පුතෙකු සිටිය හැකි අතර, පුතාටද අනුක්රමයෙන් එක් පුතෙකු සිටිය හැකිය.
දත්ත ගබඩා කරන්නේ කෙසේදැයි සිතා ගත යුතුය.
මනසට පැමිණිය හැකි පළමු අදහස වන්නේ
වගු දෙකක් සෑදීමයි: පියවරුන් සඳහා parents සහ
පුතුන් සඳහා sons. ඉන්පසු මෙම වගු සම්බන්ධ කරන්න
යම් ක්ෂේත්රයක් සමඟ: son_id
හෝ parent_id.
කෙසේ වෙතත්, මෙය හොඳ අදහසක් නොවේ - මන්ද එකම පුද්ගලයාට එකවරම විය හැකිය පියෙකු සහ පුතෙකු ලෙස - එය ගබඩා කිරීමට සිදුවනු ඇත වගු දෙකෙහිම, මෙය අපහසුය, අඩු කරයි වැඩි ඉඩක් සහ දෝෂ වලට පහසුවෙන් මග පාදයි.
වඩා හොඳ විකල්පයක් වන්නේ වගුවම සම්බන්ධ කිරීමයි
සමඟ: අපි users වගුව සාදමු,
අපි සියලු පරිශීලකයින් ගබඩා කරන අතර සෑම අයෙකුටම සාදන්නෙමු
ක්ෂේත්රය son_id, එහි ගබඩා කරනු ඇත
මෙම වගුවෙන්ම id පුතා:
| id | name | son_id |
|---|---|---|
| 1 | user1 | 2 |
| 2 | user2 | 3 |
| 3 | user3 | null |
විමසුම්
දැන් අපි පරිශීලකයා ලබා ගන්නා විමසුමක් ලියමු ඔහුගේ පුතා සමඟ.
පළමුව, අපි පරිශීලකයන් ලබා ගනිමු:
SELECT
*
FROM
users
දැන් අපි පරිශීලකයින් සමඟ ඔවුන්ගේ පුතුන් එක් කරමු. එක් කිරීම අපි වගුවම කරන්නෙමු, එබැවින් අපට එහි නම වෙනස් කිරීම සිදු කිරීමට අවශ්යය:
LEFT JOIN users as sons
දැන් අපට ප්රධාන වගුවේ සම්බන්ධතාවය නියම කළ හැකිය සහ නම වෙනස් කරන ලද:
LEFT JOIN users as sons ON sons.id=users.son_id
දැන් ක්ෂේත්ර නියම කරමු:
SELECT
users.name as user_name, sons.name as son_name
අපි සියල්ල එකට එකතු කර පහත විමසුම ලබා ගනිමු:
SELECT
users.name as user_name, sons.name as son_name
FROM
users
LEFT JOIN users as sons ON sons.id=users.son_id
ප්රායෝගික කාර්යයන්
අපට වර්ග ඇතැයි සිතමු. සෑම කාණ්ඩයක්ම මව් කාණ්ඩයකට අයත් විය හැකිය, එය අනුක්රමයෙන් එහි මව් කාණ්ඩයට සහ එසේම පසුව. ගබඩා කිරීමේ ව්යුහය සකස් කරන්න.
එය සමඟම කාණ්ඩය ලබා ගන්නා විමසුමක් ලියන්න එහි මව් කාණ්ඩය.
එය සමඟම කාණ්ඩය ලබා ගන්නා විමසුමක් ලියන්න එහි මව් සහ මුතුන් මිත්තන් සමඟ.
එය සමඟම කාණ්ඩය ලබා ගන්නා විමසුමක් ලියන්න එහි මව්, මුතුන් මිත්තන් සහ මුතුන් මිත්තන් සමඟ.