دستور SQL Join برای ترکیب داده ها یا ردیف های دو یا چند جدول بر اساس یک فیلد مشترک بین آنها استفاده می شود.در این مقاله انواع Join را با مثال بررسی می کنیم.
انواع مختلف Join به شرح زیر است:
- INNER JOIN
- LEFT JOIN
- RIGHT JOIN
- FULL JOIN
- NATURAL JOIN
1.INNER JOIN
کلمه کلیدی INNER JOIN همه سطرها را از هر دو جدول تا زمانی که شرط برآورده شود انتخاب می کند. این کلمه کلیدی مجموعه نتیجه را با ترکیب همه ردیفهای هر دو جدول ایجاد میکند که شرط راضی است یعنی مقدار فیلد مشترک یکسان خواهد بود.
نحو:
SELECT table1.column1,table1.column2,table2.column1,.... FROM table1 INNER JOIN table2 ON table1.matching_column = table2.matching_column; table1: جدول اول. table2: جدول دوم matching_column: ستون مشترک بین دو جدول.
نکته: همچنین می توانیم به جای INNER JOIN، JOIN را بنویسیم. JOIN همان INNER JOIN است.
پرس و جوی نمونه (INNER JOIN)
این پرسش نام و سن دانش آموزان ثبت نام شده در دوره های مختلف را نشان می دهد.
SELECT StudentCourse.COURSE_ID, Student.NAME, Student.AGE FROM Student INNER JOIN StudentCourse ON Student.ROLL_NO = StudentCourse.ROLL_NO;
2.LEFT JOIN
این اتصال تمام ردیفهای جدول سمت چپ اتصال را برمیگرداند و ردیفهایی را برای جدول سمت راست پیوند مطابقت میدهد. برای سطرهایی که ردیف منطبقی برای آنها در سمت راست وجود ندارد، مجموعه نتیجه حاوی null خواهد بود. LEFT JOIN با نام LEFT OUTER JOIN نیز شناخته می شود.
نحو:
SELECT table1.column1,table1.column2,table2.column1,.... FROM table1 LEFT JOIN table2 ON table1.matching_column = table2.matching_column; table1: جدول اول. table2: جدول دوم matching_column: ستون مشترک بین دو جدول.
نکته: همچنین می توانیم به جای LEFT JOIN از LEFT OUTER JOIN استفاده کنیم، هر دو یکسان هستند.
پرس و جوی نمونه (LEFT JOIN):
SELECT Student.NAME,StudentCourse.COURSE_ID FROM Student LEFT JOIN StudentCourse ON StudentCourse.ROLL_NO = Student.ROLL_NO;
3.RIGHT JOIN
RIGHT JOIN شبیه به LEFT JOIN است. این اتصال تمام ردیف های جدول در سمت راست اتصال و ردیف های مطابق با جدول در سمت چپ اتصال را برمی گرداند. برای سطرهایی که ردیف منطبقی برای آنها در سمت چپ وجود ندارد، مجموعه نتیجه حاوی null خواهد بود. RIGHT JOIN با نام RIGHT OUTER JOIN نیز شناخته می شود.
نحو:
SELECT table1.column1,table1.column2,table2.column1,.... FROM table1 RIGHT JOIN table2 ON table1.matching_column = table2.matching_column; table1: جدول اول. table2: جدول دوم matching_column: ستون مشترک بین دو جدول.
نکته: همچنین می توانیم به جای RIGHT JOIN از RIGHT OUTER JOIN استفاده کنیم، هر دو یکسان هستند.
پرس و جوی نمونه (RIGHT JOIN)
SELECT Student.NAME,StudentCourse.COURSE_ID FROM Student RIGHT JOIN StudentCourse ON StudentCourse.ROLL_NO = Student.ROLL_NO;
4.FULL JOIN
FULL JOIN مجموعه نتایج را با ترکیب نتایج LEFT JOIN و RIGHT JOIN ایجاد می کند. مجموعه نتیجه شامل تمام سطرهای هر دو جدول خواهد بود. برای ردیف هایی که هیچ تطبیقی برای آنها وجود ندارد، مجموعه نتیجه حاوی مقادیر NULL خواهد بود.
نحو:
SELECT table1.column1,table1.column2,table2.column1,.... FROM table1 FULL JOIN table2 ON table1.matching_column = table2.matching_column; table1: جدول اول. table2: جدول دوم matching_column: ستون مشترک بین دو جدول.
پرس و جوی نمونه (FULL JOIN)
SELECT Student.NAME,StudentCourse.COURSE_ID FROM Student FULL JOIN StudentCourse ON StudentCourse.ROLL_NO = Student.ROLL_NO;