Skip to content
GitHub

ဇယားတွေ ပေါင်းဆက်ခြင်း (JOIN နားလည်နည်း)

လက်တွေ့ Database တွေမှာ အရာအားလုံးကို ဇယား (Table) တစ်ခုတည်းမှာ အကုန် ပုံအောမထားပါဘူး။ မှတ်တမ်းအချက်အလက်တွေကို သီးသန့် ဇယားတွေခွဲပြီး (Users, Posts, Comments, Orders တွေ) ထားကြပါတယ်။

အရေးကြီးဆုံး သင်ခန်းစာကတော့ ဒီလို ခွဲထားတဲ့ ဇယားတွေကို တစ်ခုနဲ့တစ်ခု ဆက်စပ်ပြီး လိုချင်တဲ့ Data ထုတ်ယူတဲ့အခါ JOIN ကို သုံးပါတယ်။

JOIN တွေ ဘယ်နှစ်မျိုးရှိလဲ

Section titled “JOIN တွေ ဘယ်နှစ်မျိုးရှိလဲ”

အဓိက (၄) မျိုး ရှိပါတယ်။

  1. INNER JOIN (တူညီရာကိုသာ ယူမယ်)
  2. LEFT JOIN (ဘယ်ဘက် ဇယားကို အဓိကထားမယ်)
  3. RIGHT JOIN (ညာဘက် ဇယားကို အဓိကထားမယ်)
  4. FULL OUTER JOIN (အားလုံးကို ယူမယ်)

၁. INNER JOIN (တူညီရာကိုသာ ယူမယ်)

Section titled “၁. INNER JOIN (တူညီရာကိုသာ ယူမယ်)”

အခု User တွေနဲ့ သူတို့ရဲ့ Order တွေ မှတ်ထားတဲ့ Table (၂) ခုရှိတယ်ဆိုပါစို့။

  • users ဇယား (id, name, email)
  • orders ဇယား (id, user_id, amount)

User တစ်ယောက်က Order တင်ထားရင် orders မှာ သူ့ရဲ့ user_id ရောက်သွားမယ်။ ဒီ (၂) ခု ပေါင်းလိုက်ရင်:

SELECT users.name, orders.amount
FROM users
INNER JOIN orders
ON users.id = orders.user_id;

(အဓိပ္ပာယ်: ဇယား ၂ ခုမှာ id တူတဲ့လူတွေရဲ့ နာမည်နဲ့ ပမာဏ ကိုပဲ ထုတ်ပြမယ်။ Order မဝယ်ထားတဲ့ User တွေ မပါလာပါဘူး။)


၂. LEFT JOIN (ဘယ်ဘက် ဇယားကို အဓိကထားမယ်)

Section titled “၂. LEFT JOIN (ဘယ်ဘက် ဇယားကို အဓိကထားမယ်)”

users Table ကို အခြေခံပြီး Order ဝယ်သည်ဖြစ်စေ၊ မဝယ်သည်ဖြစ်စေ User တွေကို အားလုံး ပြချင်တယ်။

SELECT users.name, orders.amount
FROM users
LEFT JOIN orders
ON users.id = orders.user_id;

(အဓိပ္ပာယ်: users ဇယား (ဘယ်ဘက်) က လူတွေအကုန် ထုတ်ပြမယ်။ သူတို့ဝယ်ထားတဲ့ orders ပါရင် ပြမယ်၊ မပါရင် ဗလာ (NULL) ပြမယ်။)


၃. RIGHT JOIN (ညာဘက် ဇယားကို အဓိကထားမယ်)

Section titled “၃. RIGHT JOIN (ညာဘက် ဇယားကို အဓိကထားမယ်)”

ဒါက LEFT JOIN ရဲ့ ပြောင်းပြန်ပါ။ orders ဇယားထဲမှာ ရှိတာ အကုန် ပြမယ်။ ကိုက်ညီတဲ့ users မရှိရင် ဗလာပဲ။

SELECT users.name, orders.amount
FROM users
RIGHT JOIN orders
ON users.id = orders.user_id;

ပုံမှန်အားဖြင့်တော့ INNER JOIN နဲ့ LEFT JOIN ကို အများဆုံး သုံးလေ့ရှိပါတယ်။ ဒီနှစ်ခုကို နားလည်ထားပြီးရင် ကျန်တာတွေက လွယ်ပါတယ်။