آموزش کار با MySQL در پایتون؛ بخش دوازدهم، انجام join روی دو یا چند جدول

به دوازدهمین و آخرین قسمت از سری مطالب آموزش استفاده از سیستم مدیریت پایگاه داده MySQL در پایتون، خوش آمدید!

بخش قبلی این سری آموزشی، در این صفحه منتشر شده است: آموزش کار با MySQL در پایتون؛ بخش یازدهم، محدود کردن تعداد نتایج

در این بخش یکی از پرکاربرد ترین موارد در نوشتن برنامه کاربردی پایگاه داده یعنی انجام join روی جداول را بررسی می کنیم و در زبان پایتون برای این کار کدنویسی می کنیم.

ادغام دو یا چند جدول در MySQL و پایتون

شما می توانید ردیف هایی از دو یا چند جدول را با استفاده ستون (های) مشترک میان آن ها ترکیب کنید و این کار به طور کلی با دستور JOIN انجام می پذیرد. قبلاً در اوپن مایند، در یک مطلب مفصل تر انواع join در زبان SQL را بررسی کرده ایم که پیشنهاد می کنیم قبل از ادامه این مطلب حتماً آن را مطالعه کنید.

حالا بیایید دو جدول “users” و “genres” را با مقادیر زیر در نظر بگیرید.

حالا می خواهیم این دو جدول را توسط ستون های fav از users و id از genres را با هم ترکیب کنیم که ببینیم نام ژانر موزیکی که هر کاربر دوست دارد چیست. به کد زیر دقت کنید.

در کوئری بالا می توانستیم به جای INNER JOIN از JOIN استفاده کنیم و در واقع کلمه INNER بی تاثیر است که این موضوع در همان مطلب انواع join در زبان SQL هم توضیح داده شده است.

انجام LEFT JOIN

در مثال بالا برزو و کورش در نتیجه ادغام و اجرای کوئری ظاهر نمی شوند. چرا که در واقع کد ژانر محبوب شان برای آن ها مشخص نشده است و INNER JOIN تنها ردیف هایی را نشان می دهد دقیقاً مقدار آن ها در ستون مشترک مشخص شده، برابر باشد (هم مقادیر موجود باشد و هم برابر).

حالا اگر بخواهیم تمام کاربران، چه با داشتن مقدار برابر در ستون مشخص شده از جدول genres و چه غیر آن، در نتیجه کوئری باشند چه؟ راه حل در استفاده از LEFT JOIN به جای INNER JOIN است. به کوئری زیر دقت کنید.

این کوئری تمام کاربران و ژانرهای مورد علاقه شان را از جدول ترکیب آن ها به عنوان نتیجه بر می گرداند.

انجام RIGHT JOIN

و اما با استفاده از RIGHT JOIN می توانیم تمام ژانرها را در خروجی کوئری داشته باشیم حتی اگر هیچ کاربری آن ها را انتخاب نکرده باشد (مقدار برابری با id آن ها در ستون fav کاربران پیدا نشود).

به کوئری زیر دقت کنید. نتیجه این کوئری تنها کاربرانی که کد ژانر مورد علاقه آن ها موجود و در جدول ژانرها باشد و تمام ژانرها را شامل می شود (برعکس LEFT JOIN نام برزو و کورش که نام ژانر مورد علاقه شان را انتخاب نکرده اند در خروجی نیست).

 

خب، تمام شد! در این سری آموزشی سعی بر رعایت اختصار بود. امیدواریم که مطالعه آموزش های این سری ایده های کافی برای شروع برنامه نویسی پایگاه داده در پایتون را به شما داده باشد. به امید موفقیت! 🙂

 

 

نظرتان را برای ما بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *