Python හි සම්බන්ධිත වගු වලින් දත්ත ලබා ගැනීම
අපි සියලුම පරිශීලකයන් ඔවුන්ගේ නගර සමඟම ලබා ගන්න විමසුමක් කරමු. මේ සඳහා
අවශ්ය වනු ඇත්තේ LEFT
JOIN විධානයයි:
එහි වාග් රීතිය පහත පරිදි වේ:
SELECT ගොනු FROM වගු_නාමය
LEFT JOIN සම්බන්ධිත_වගු_නාමය ON සම්බන්ධතා_කොන්දේසිය
WHERE තෝරාගැනීමේ_කොන්දේසිය
අපි මෙම විධානයේ වාග් රීතියේ වෙනස් කොටස් වෙන වෙනම බලමු.
ගොනු
තෝරාගැනීම වගු කිහිපයකින් සිදු වන නිසා,
* හරහා සියලුම ගොනු තෝරාගැනීම
ක්රියා නොකරයි. පහත විමසුම ප්රධාන වගුවෙන් පමණක් ගොනු තෝරාගනී, නමුත්
සම්බන්ධිත වගුවෙන් නොවේ:
SELECT *
සියලුම වගු වලින් දත්ත තෝරාගැනීමට,
* ට පෙර තෝරාගැනීම සඳහා වගුවේ නාමය නිශ්චිතව දැක්විය යුතුය:
SELECT users.*, cities.*
නැතහොත් අවශ්ය ගොනු අපට අවශ්ය වගුවේ නාමය සමඟ ලැයිස්තුගත කළ හැකිය:
SELECT users.name, cities.name
මෙම ක්රම දෙකටම ගැටලුවක් ඇත. කාරණය එයයි, වගු වල ගොනුවලට එකම නම් තිබේ නම්, Python අරාවේ නම් ගැටුමක් සිදු වී එක් ගොනුවක් පමණක් ජයග්රහණය කරන අතර දෙවැන්න නොමැති වනු ඇත.
ගැටලුව විසඳීම සඳහා ගැටෙන
නම් as විධානය භාවිතයෙන් යළි නම් කළ යුතුය:
SELECT users.name, cities.name as city_name
සම්බන්ධතාවය
ON විධානයට පසුව අපි
වගු දෙකෙහිම සම්බන්ධතාවය සිදුවන
ගොනු දැක්විය යුතුය. අපගේ නඩුවේ මෙය id ගොනුව
නගර වගුවෙන් සහ city_id ගොනුව
පරිශීලක වගුවෙන් වනු ඇත:
ON cities.id=users.city_id
විමසුම
අවසානයේදී, පරිශීලකයන් ඔවුන්ගේ නගර සමඟම ලබා ගන්න විමසුම පහත පරිදි වනු ඇත:
SELECT
users.name, cities.name as city_name
FROM
users
LEFT JOIN cities ON cities.id=users.city_id
ප්රායෝගික කාර්යයන්
ඔබට භාණ්ඩ සහිත වගුවක් සහ ඒවායේ කාණ්ඩ සහිත වගුවක් ඇතැයි සිතමු. භාණ්ඩවල නම් ඒවායේ කාණ්ඩ සමඟම ලබා ගන්න විමසුමක් ලියන්න.