Python හි සම්බන්ධිත වගු වලින් දත්ත ලබා ගැනීම

අපි සියලුම පරිශීලකයන් ඔවුන්ගේ නගර සමඟම ලබා ගන්න විමසුමක් කරමු. මේ සඳහා අවශ්‍ය වනු ඇත්තේ LEFT JOIN විධානයයි:

එහි වාග් රීතිය පහත පරිදි වේ:

sqlSELECT ගොනු FROM වගු_නාමය
  LEFT JOIN සම්බන්ධිත_වගු_නාමය ON සම්බන්ධතා_කොන්දේසිය
WHERE තෝරාගැනීමේ_කොන්දේසිය

අපි මෙම විධානයේ වාග් රීතියේ වෙනස් කොටස් වෙන වෙනම බලමු.

ගොනු

තෝරාගැනීම වගු කිහිපයකින් සිදු වන නිසා, * හරහා සියලුම ගොනු තෝරාගැනීම ක්‍රියා නොකරයි. පහත විමසුම ප්‍රධාන වගුවෙන් පමණක් ගොනු තෝරාගනී, නමුත් සම්බන්ධිත වගුවෙන් නොවේ:

sqlSELECT *

සියලුම වගු වලින් දත්ත තෝරාගැනීමට, * ට පෙර තෝරාගැනීම සඳහා වගුවේ නාමය නිශ්චිතව දැක්විය යුතුය:

sqlSELECT users.*, cities.*

නැතහොත් අවශ්‍ය ගොනු අපට අවශ්‍ය වගුවේ නාමය සමඟ ලැයිස්තුගත කළ හැකිය:

sqlSELECT users.name, cities.name

මෙම ක්‍රම දෙකටම ගැටලුවක් ඇත. කාරණය එයයි, වගු වල ගොනුවලට එකම නම් තිබේ නම්, Python අරාවේ නම් ගැටුමක් සිදු වී එක් ගොනුවක් පමණක් ජයග්‍රහණය කරන අතර දෙවැන්න නොමැති වනු ඇත.

ගැටලුව විසඳීම සඳහා ගැටෙන නම් as විධානය භාවිතයෙන් යළි නම් කළ යුතුය:

sqlSELECT users.name, cities.name as city_name

සම්බන්ධතාවය

ON විධානයට පසුව අපි වගු දෙකෙහිම සම්බන්ධතාවය සිදුවන ගොනු දැක්විය යුතුය. අපගේ නඩුවේ මෙය id ගොනුව නගර වගුවෙන් සහ city_id ගොනුව පරිශීලක වගුවෙන් වනු ඇත:

sqlON cities.id=users.city_id

විමසුම

අවසානයේදී, පරිශීලකයන් ඔවුන්ගේ නගර සමඟම ලබා ගන්න විමසුම පහත පරිදි වනු ඇත:

sqlSELECT
  users.name, cities.name as city_name
FROM
  users
LEFT JOIN cities ON cities.id=users.city_id

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

Задание 1

ඔබට භාණ්ඩ සහිත වගුවක් සහ ඒවායේ කාණ්ඩ සහිත වගුවක් ඇතැයි සිතමු. භාණ්ඩවල නම් ඒවායේ කාණ්ඩ සමඟම ලබා ගන්න විමසුමක් ලියන්න.