Python တွင် ဆက်စပ်တဲ့ ဇယားများမှ ဒေတာရယူခြင်း

အသုံးပြုသူအားလုံးကို သူတို့ရဲ့မြို့တွေနဲ့အတူ ရယူမယ့် query တစ်ခု ရေးကြည့်ရအောင်။ ဒီအတွက် LEFT JOIN command လိုအပ်ပါလိမ့်မယ်:

၎င်းရဲ့ syntax က အောက်ပါအတိုင်းဖြစ်ပါတယ်:

sqlSELECT fields FROM table_name
  LEFT JOIN related_table_name ON join_condition
WHERE selection_condition

ဒီ command ရဲ့ syntax အစိတ်အပိုင်းတစ်ခုချင်းစီကို ကြည့်ရအောင်။

Fields (ကွက်လပ်များ)

ဇယားများစွာမှ ရွေးထုတ်တာဖြစ်တဲ့အတွက် * ကိုသုံးပြီး fields အားလုံးရွေးတာက အလုပ်မဖြစ်ပါဘူး။ အောက်ကမေးမြန်းချက်က အဓိက ဇယားကနေ fields တွေကိုပဲ ရွေးပေးမှာဖြစ်ပြီး ဆက်စပ်တဲ့ ဇယားကနေ ရွေးမပေးပါဘူး:

sqlSELECT *

ဇယားအားလုံးကနေ ဒေတာတွေရွေးချယ်ဖို့ဆို * ရဲ့ရှေ့မှာ ဇယားနာမည်ကို ဖော်ပြပေးရပါမယ်:

sqlSELECT users.*, cities.*

ဒါမှမဟုတ် လိုအပ်တဲ့ fields တွေကို ဇယားနာမည်နဲ့တကွ ရွေးချယ်ပြောနိုင်ပါတယ်:

sqlSELECT users.name, cities.name

နည်းလမ်းနှစ်ခုစလုံးမှာ ပြဿနာရှိပါတယ်။ ဇယားတွေထဲက fields တွေမှာ နာမည်တူနေရင် Python array ထဲမှာ နာမည်ပဋိပက္ခဖြစ်ပြီး field တစ်ခုပဲအနိုင်ရမှာ၊ ဒုတိယတစ်ခုမရှိတော့ပါဘူး။

ဒီပြဿနာကိုဖြေရှင်းဖို့ ပဋိပက္ခဖြစ်နေတဲ့နာမည်တွေကို as command နဲ့ အမည်ပြောင်းပေးရပါမယ်:

sqlSELECT users.name, cities.name as city_name

Join Condition (ဆက်သွယ်မှု)

ON command ရဲ့နောက်မှာ ဇယားနှစ်ခုကနေ ဆက်သွယ်မှုလုပ်ပေးတဲ့ fields တွေကို ဖော်ပြပေးရပါမယ်။ ကျွန်ုပ်တို့ဖြစ်ရပ်မှာဆို မြို့များဇယားက id field နဲ့ အသုံးပြုသူများဇယားက city_id field ဖြစ်ပါတယ်:

sqlON cities.id=users.city_id

Query (မေးမြန်းချက်)

အဆုံးသတ်မှာ အသုံးပြုသူတွေကို သူတို့ရဲ့မြို့တွေနဲ့အတူ ရယူမယ့် query က အောက်ပါအတိုင်းဖြစ်ပါလိမ့်မယ်:

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

လက်တွေ့လေ့ကျင့်ခန်းများ

Задание 1

သင့်မှာ ကုန်ပစ္စည်းဇယားနဲ့ ၎င်းတို့ရဲ့အမျိုးအစားဇယားရှိတယ်ဆိုပါစို့။ ကုန်ပစ္စည်းအမည်တွေကို သူတို့ရဲ့အမျိုးအစားတွေနဲ့အတူ ရယူမယ့် query တစ်ခုကို ရေးပြပါ။