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 Table (id, name, email)
  • orders Table (id, user_id, amount)

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

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

(အဓိပ္ပာယ်: ဇယား ၂ ခုစလုံးမှာ id နဲ့ user_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 ရှိရင် အဲ့ဒီ Data ပါ ပြပေးပြီး၊ ဘာမှ မဝယ်ထားရင်တော့ အဲ့ဒီနေရာမှာ ဗလာ (NULL) လို့ပဲ ပြပေးပါမယ်)

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

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

ဒါကတော့ LEFT JOIN ရဲ့ ပြောင်းပြန် သဘောတရားပါ။ orders ဇယား (ညာဘက်) ထဲမှာ ရှိသမျှ Data အကုန် ပြပါမယ်။ အကယ်၍ အဲ့ဒီ Order နဲ့ ကိုက်ညီတဲ့ users ရှာမတွေ့ခဲ့ရင် ဗလာ (NULL) လို့ ပြပေးမှာပါ။

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

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