تعداد بازدید: 18

ادغام جداول یا JOIN

ارتباط میان جداول پایگاه داده در نرم افزار های دسته RDBMS یا Relational DataBase Managment System از طریق کلید های خارجی یا ماهیت جداول امکان پذیر است.می توان با استفاده از JOIN در MySQL اطلاعات چند جدول را در قالب یک جدول یک پارچه دریافت کرد ، جدول یک پارچه نهایی می تواند بر اساس روابط میان جداول باشد.

انواع JOIN در MySQL

مفاهیم JOIN همان مفاهیم مجموعه ها در ریاضیات می باشد. در mysql پنج نوع JOIN داریم :

  • CROSS JOIN ( ضربدری )
  • INNER JOIN ( داخلی )
  • OUTER JOIN ( خارجی )
    • RIGHT JOIN
    • LEFT JOIN
  • SELF JOIN ( خودی )
  • UNIUON ( اجتماع )

CROSS JOIN

اجتماع ضربدری میان دو جدول که با استفاده از ضرب مجموعه ها امکان پذیر می باشد. بدین ترتیب که تمامی ردیف ها از جدول اول با هر یک از ردیف های جدول دوم ضرب می شود :

در CROSS JOIN تعداد ستون ها و ردیف ها از حاصل ضرب ستون و ردیف جداول بدست می آید . جداول بالا با استفاده از کد زیر بدست آمده است :

INNER JOIN

از جمله پر کاربردترین JOIN ها می باشد ، نحوه عملکرد به شکل موارد مشترک CROSS JOIN می باشد.معمولا این نوع از ادغام با استفاده از اتصال های جداول انجام می پذیرد (کلیدهای خارجی Foreign Key).

به طور مثال داریم grade و student و می خواهیم نام دانش آموزان و نمرات آن ها را در یک جدول یکتا داشته باشیم.

در INNER JOIN ردیف های غیر متناظر در جدول نهایی نمی آیند مثلا در جداول بالا Ali Aghasizade نمره ای در جدول grade ندارد و در جدول نهایی نمی باشد. کد زیر جدول نهایی بالا را می سازد :

جدولی که قرار است توسط JOIN متصل گردد باید با توجه به شرط نهایی نمایش داده گردد. منطق نوشتن SQL برای INNER JOIN همین است.

جداول شرکت کننده در INNER JOIN می توانند بیش از یک مورد باشد. با استفاده از AND می توان جداول بعدی را نیز مشارکت داد :

ارتباط میان ON و WHERE : حضور هر دوی این کلمات کلیدی در یک sql خطا می باشد. دقت داشته باشید می توانید به صورت ترکیبی از join و کلمه کلیدی WHERE استفاده کنید :

OUTER JOIN

در INNER JOIN هنگامی که در جداول رکورد متناظری وجود نداشته باشد نتیجه آن رکورد در خروجی نمی آید. OUTER JOIN با توجه به اشتراک چپ یا راست می تواند این مشکل را برطرف کند. یعنی به ازای سلول های خالی null قرار می دهد.

OUTER JOIN به دو دسته LEFT JOIN و RIGHT JOIN تقسیم بندی می شود. در جداول بالا دو مورد غیر متناظر وجود دارد . اگر LEFT JOIN انجام دهیم اشتراک از جدول سمت چپ برداشته می شود و اگر RIGHT JOIN انجام دهیم اشتراک از جدول سمت راست پیاده سازی می شود یعنی نمره ۲۰ بدون نام در ردیف سوم جدول نهایی قرار می گیرد.

SELF JOIN

SELF JOIN یک حالت خاص از INNER JOIN است که در آن برخی سلول های جدول با سلول های دیگر ارتباط دارد. در این صورت می توان یک جدول را دو جدول در نظر گرفت و روابط را پیاده سازی کرد.

مثلا یک جدول منو داریم که هر آیتم از منو یک parent_id دارد که اگر 0 باشد منوی اصلی و اگر یک عدد از id سایر منوها باشد زیر منو تلقی می شود :

کد زیر جدول بالا را می سازد ( از جدول دوم نام هایی را نمایش بده که شماره id آن ها برابر با prent_id در جدول اول است ) :

چون یک جدول در کار است می توانیم از WHERE استفاده کنیم:

UNION

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

کد زیر جدول بالا را می سازد‌:

نکته : برای برقراری ارتباط میان جداول می توان از توابع IN , GROUP_CONTACT نیز به عنوان کمک در برخی کوئری های پیچیده استفاده کرد.

اشتراک گذاری :

مدیر وب سایت گنوتک . برنامه نویسی رو با زبان C در هفده سالگی شروع کردم . در حال حاضر به برنامه نویسی php برپایه معماری MVC , HMVC و همچنین سیستم مدیریت محتوای WordPress و فریم ورک محبوب لاراول علاقه مند هستم و دوست دارم اطلاعاتم رو با شما به اشتراک بگذارم.

۰ دیدگاه برای ادغام جداول یا JOIN

پاسخی بگذارید

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