در دیتابیس های SQL Server، دستور JOIN برای ترکیب دادهها از دو یا چند جدول مختلف به کار میرود. به عبارت دیگر با دستور Join یک یا چند جدول را کنار یکدیگر قرار می دهیم.این عملیات امکان ایجاد ارتباط بین دادهها در جداول را بدون تکرار دادهها فراهم میکند. ستون هایی که در دو جدول مختلف وجود دارند و به یکدیگر وابسته هستند، با استفاده از دستور JOIN میتوانند به یکدیگر مرتبط شوند. نوع این ارتباطها توسط انواع مختلف JOIN تعیین میشود. در اینجا شش نوع مهم دستور JOIN در SQL Server آورده شدهاند:
1. Inner Join:
Inner Join یکی از انواع دستور JOIN در دیتابیس SQL Server است که برای ترکیب ردیفهای متناظر در دو جدول بر اساس یک شرط مشخص استفاده میشود. این نوع جوین تنها ردیفهایی را نمایش میدهد که مقادیر مشخص در فیلد مشخصی از هر دو جدول با یکدیگر مطابقت دارند. به عبارت دیگر، تنها ردیفهایی که در فیلد مشخص شده به یکدیگر متناظرند، در خروجی Inner Join نمایش داده میشوند.
برای استفاده از Inner Join، یک شرط ارتباط بین دو جدول باید مشخص گردد. این شرط معمولاً با استفاده از عبارات مقایسه مانند “equals” (=) تعریف میشود. به عنوان مثال، فرض کنید دو جدول به نام “employees” و “departments” داریم و میخواهیم اطلاعات کارمندان و دپارتمانها را بر اساس شماره دپارتمان (department_id) با یکدیگر ترکیب کنیم:
SELECT employees.employee_id, employees.employee_name, departments.department_name FROM employees INNER JOIN departments ON employees.department_id = departments.department_id; |
در این جمله SQL، Inner Join اطلاعات متناظر بین جدول “employees” و “departments” را بر اساس مقدار فیلد “department_id” ترکیب میکند. نتیجه این Inner Join، نمایش اطلاعات کارمندان به همراه نام دپارتمان متناظر آنها است.
استفاده از Inner Join به ما این امکان را میدهد که تنها ردیفهایی را که در هر دو جدول مطابقت دارند، در نتیجه نهایی مشاهده کنیم. این به ما این اطمینان را میدهد که تنها اطلاعات مرتبط و مشابه در دو جدول به نمایش درآمده و دادهها تکراری حاصل از ترکیب حذف میشوند.
2. Left Join:
Left Join یکی از نوعهای دستور جوین در دیتابیس SQL Server است که برای ترکیب ردیفهای دو جدول بر اساس یک شرط مشخص استفاده میشود. در این نوع جوین، تمام ردیفهای جدول اول (چپ) حتی اگر مطابقتی در جدول دوم (راست) وجود نداشته باشد، نمایش داده میشوند. اگر مطابقت وجود داشته باشد، اطلاعات مرتبط از دو جدول نمایش داده میشوند؛ در غیر این صورت، مقادیر ناشناخته (NULL) در فیلدهای جدول دوم نمایش داده میشوند.
برای استفاده از Left Join، یک شرط ارتباط بین دو جدول باید مشخص گردد. این شرط معمولاً با استفاده از عبارات مقایسه مانند “equals” (=) تعریف میشود. مثال زیر نشاندهنده استفاده از Left Join بین دو جدول “employees” و “departments” بر اساس شماره دپارتمان (department_id) است:
SELECT employees.employee_id, employees.employee_name, departments.department_name FROM employees LEFT JOIN departments ON employees.department_id = departments.department_id; |
در این جمله SQL، Left Join تمام ردیفهای جدول “employees” را نمایش میدهد، حتی اگر مطابقتی در جدول “departments” وجود نداشته باشد. اگر مطابقت وجود داشته باشد، اطلاعات متناظر از هر دو جدول نمایش داده میشوند، و در غیر این صورت، مقادیر ناشناخته (NULL) برای فیلدهای جدول “departments” نمایش داده میشوند.
استفاده از Left Join به ما این امکان را میدهد که تمام ردیفهای جدول اصلی را نمایش دهیم، حتی اگر مطابقت در جدول دوم وجود نداشته باشد. این مفهوم به خوبی برای مواقعی که میخواهیم تمام اطلاعات یک جدول را نمایش دهیم و در صورت وجود اطلاعات مرتبط در جدول دیگر، آنها را هم نمایش دهیم، مورد استفاده قرار میگیرد.
3. Right Join:
Right Join یکی دیگر از انواع دستور جوین در دیتابیس SQL Server است که برای ترکیب ردیفهای دو جدول بر اساس یک شرط مشخص به کار میرود. در این نوع جوین، تمام ردیفهای جدول دوم (راست) حتی اگر مطابقتی در جدول اول (چپ) وجود نداشته باشد، نمایش داده میشوند. اگر مطابقت وجود داشته باشد، اطلاعات مرتبط از هر دو جدول نمایش داده میشوند، و در غیر این صورت، مقادیر ناشناخته (NULL) در فیلدهای جدول اول نمایش داده میشوند.
برای استفاده از Right Join، یک شرط ارتباط بین دو جدول باید مشخص گردد. این شرط معمولاً با استفاده از عبارات مقایسه مانند “equals” (=) تعریف میشود. مثال زیر نشاندهنده استفاده از Right Join بین دو جدول “employees” و “departments” بر اساس شماره دپارتمان (department_id) است:
SELECT employees.employee_id, employees.employee_name, departments.department_name FROM employees RIGHT JOIN departments ON employees.department_id = departments.department_id; |
در این جمله SQL، Right Join تمام ردیفهای جدول “departments” را نمایش میدهد، حتی اگر مطابقتی در جدول “employees” وجود نداشته باشد. اگر مطابقت وجود داشته باشد، اطلاعات متناظر از هر دو جدول نمایش داده میشوند، و در غیر این صورت، مقادیر ناشناخته (NULL) برای فیلدهای جدول “employees” نمایش داده میشوند.
استفاده از Right Join به ما این امکان را میدهد که تمام ردیفهای جدول دوم را نمایش دهیم، حتی اگر مطابقت در جدول اول وجود نداشته باشد. این مفهوم معمولاً در مواردی استفاده میشود که میخواهیم تمام اطلاعات یک جدول را نمایش دهیم و در صورت وجود اطلاعات مرتبط در جدول دیگر، آنها را هم نمایش دهیم.
4. Full Join:
Full Join یا همان Full Outer Join نیز یک نوع دستور جوین در دیتابیس SQL Server است که برای ترکیب تمام ردیفهای دو جدول بر اساس یک شرط مشخص استفاده میشود. در این نوع JOIN، تمام ردیفهای هر دو جدول حتی اگر مطابقتی در دیگری وجود نداشته باشد، نمایش داده میشوند. اگر مطابقت وجود داشته باشد، اطلاعات متناظر از هر دو جدول نمایش داده میشوند؛ در غیر این صورت، مقادیر ناشناخته (NULL) در فیلدهای مرتبط نمایش داده میشوند.
برای استفاده از Full Join، یک شرط ارتباط بین دو جدول باید مشخص گردد. این شرط معمولاً با استفاده از عبارات مقایسه مانند “equals” (=) تعریف میشود. مثال زیر نشاندهنده استفاده از Full Join بین دو جدول “employees” و “departments” بر اساس شماره دپارتمان (department_id) است:
SELECT employees.employee_id, employees.employee_name, departments.department_name FROM employees FULL JOIN departments ON employees.department_id = departments.department_id; |
در این جمله SQL، Full Join تمام ردیفهای هر دو جدول را نمایش میدهد، حتی اگر مطابقتی در یکی از جداول وجود نداشته باشد. اگر مطابقت وجود داشته باشد، اطلاعات متناظر از هر دو جدول نمایش داده میشوند، و در غیر این صورت، مقادیر ناشناخته (NULL) برای فیلدهای مرتبط نمایش داده میشوند.
5. Cross Join:
Cross Join یک نوع دستور جوین در دیتابیس SQL Server است که برای ترکیب تمامی ردیفهای یک جدول با تمامی ردیفهای جدول دیگر بدون در نظر گرفتن هیچ شرطی مشخص استفاده میشود. در واقع، Cross Join ترکیب هر ردیف از جدول اول با همه ردیفهای جدول دوم را ایجاد میکند.
برای استفاده از Cross Join، شما نیاز به ارائه دو جدول بدون شرط ارتباط دارید.
SELECT *
FROM table1 CROSS JOIN table2 |
معادل دستورات SQL در مونگو دیبیMongoDB
6. Self Join:
Self Join یک نوع دستور جوین در دیتابیس SQL Server است که برای ایجاد ارتباط بین ردیفهای یک جدول با خودش (با استفاده از نام یکتا یک فیلد در جدول) استفاده میشود. به عبارت دیگر، Self Join به ما این امکان را میدهد که یک جدول را به نحوی ترکیب کنیم که ردیفهای آن با ردیفهای خودش در یک یا چند فیلد مشخص تطابق داشته باشند.
برای استفاده از Self Join، نیاز به تعریف یک نام الیاس برای جدول مورد Join دوم (بازهم همان جدول اصلی) داریم. این نام الیاس باعث میشود که جدول اصلی به دو قسمت تقسیم شود و هر قسمت با یکی از نامهای الیاسها متناظر شود.
مثال زیر نشاندهنده Self Join بر روی یک جدول به نام “employees” است که دارای فیلدی به نام “supervisor_id” برای ارتباط با خودش است. این فیلد مشخصکننده مدیر مستقیم هر کارمند است:
SELECT e.employee_id, e.employee_name, s.employee_name AS supervisor_name FROM employees e INNER JOIN employees s ON e.supervisor_id = s.employee_id; |
در این مثال، Self Join با استفاده از فیلد “supervisor_id” ارتباط بین ردیفهای “employees” ایجاد میکند. نام مستعار “e” برای کارمندان و نام مستعار “s” برای مدیران مستقیم آنها استفاده شده است. این Self Join به ما این اطلاعات را میدهد که هر کارمند با مدیر مستقیم خود متناظر است.
دیدگاه شما