နားလည်ထားရမယ့် အချက်
JOIN က table များကို key relationship ဖြင့်ပေါင်းပါတယ်။ `INNER JOIN` က နှစ်ဘက်ကိုက်သော rows သာပေးပြီး `LEFT JOIN` က ဘယ်ဘက် row အားလုံးကိုထိန်းထားပါတယ်။ One-to-many tables နှစ်ခုကို တစ်ပြိုင်နက် join လုပ်ရင် row များပွားနိုင်လို့ aggregate မတိုင်မီ result grain ကိုသတ်မှတ်ရပါတယ်။
လက်တွေ့ scenario နဲ့ ချိတ်ကြည့်မယ်
Tutorial နှင့် lesson များကို join လုပ်ပြီး published tutorial အားလုံး၏ lesson list ကိုပြမယ်။ Lesson မရှိသေးသော tutorial ကိုပါမြင်ချင်လျှင် LEFT JOIN သုံးပြီး right-table filter ကို WHERE ထဲမှားမထည့်ရပါဘူး။
အတူတူ စမ်းရေးကြည့်မယ်
SELECT
t.tutorial_id,
t.title AS tutorial_title,
l.lesson_number,
l.title AS lesson_title
FROM app.tutorials AS t
LEFT JOIN app.lessons AS l
ON l.tutorial_id = t.tutorial_id
WHERE t.is_published = true
ORDER BY t.title, l.lesson_number;Published tutorial တစ်ခုစီနှင့် ၎င်း၏ lesson များကို order တိကျစွာပြမည်။၅ မိနစ် စမ်းကြည့်
User နှင့် enrollment ကို LEFT JOIN လုပ်ပြီး enrollment မရှိသေးသော user များပါပြသော query ရေးပါ။
သတိလေးတစ်ချက်
LEFT JOIN ပြီး right table column ကို `WHERE right.col = ...` ဖြင့် filter လုပ်ရင် မသိမသာ INNER JOIN လိုပြောင်းနိုင်ပါတယ်။
PostgreSQL — Joins Between Tables — PostgreSQL Global Development Group