JOIN SQL

SQL join برای جستجوی داده‌ها از روی ارتباط بین ستون‌های دو یا چند جدول استفاده می‌کند.

Join و Key

گاهی اوقات برای دریافت نتایج کامل، نیاز داریم که از دو یا چند جدول داده دریافت کنیم. در این صورت باید از عملیات join استفاده کنیم.

جداول موجود در پایگاه داده می‌توانند با استفاده از کلیدها به یکدیگر مرتبط شوند. کلید اصلی (Primary Key) یک ستون است که در هر ردیف از آن، مقدار منحصر به فرد است. در جدول، هر مقدار کلید اصلی منحصر به فرد است. هدف از این کار، پیوند داده‌های بین جداول است بدون اینکه نیاز به تکرار همه داده‌های هر جدول باشد.

لطفاً جدول "Persons" را مشاهده کنید:

Id_P LastName FirstName آدرس شهر
1 آدامز جان شارع آکسفورد لندن
2 بوش جرج ایست ساحلی نیویورک
3 کارتر توماس شارع چانگ‌آن بیکینگ

لطفاً توجه کنید که ستون "Id_P" یک کلید اصلی در جدول "Persons" است. این به این معناست که هیچ دو ردیف نمی‌توانند کلید اصلی مشابهی داشته باشند. حتی اگر نام دو نفر کاملاً مشابه باشد، کلید اصلی می‌تواند آن‌ها را از یکدیگر تمیز دهد.

در ادامه لطفاً جدول "Orders" را مشاهده کنید:

Id_O OrderNo Id_P
1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 65

لحظ کنید، ستون "Id_O" یک کلید اصلی در جدول "Orders" است، در عین حال، ستون "Id_P" در جدول "Orders" برای ارجاع به جدول "Persons" استفاده می‌شود بدون اینکه نیاز به استفاده از نام دقیق افراد باشد.

لطفاً توجه داشته باشید که ستون "Id_P" دو جدول بالا را با هم در ارتباط قرار می‌دهد.

اشاره به دو جدول

می‌توانیم از اشاره به دو جدول برای دریافت داده‌ها از دو جدول استفاده کنیم:

چه کسی محصول را سفارش داده است و چه محصولی سفارش داده است؟

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons, Orders
WHERE Persons.Id_P = Orders.Id_P 

نتایج مجموعه:

LastName FirstName OrderNo
آدامز جان 22456
آدامز جان 24562
کارتر توماس 77895
کارتر توماس 44678

SQL JOIN - استفاده از Join

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

اگر می‌خواهیم لیست همه سفارشات افراد را لیست کنیم، می‌توانیم از دستور SELECT زیر استفاده کنیم:

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.Id_P = Orders.Id_P
ORDER BY Persons.LastName

نتایج مجموعه:

LastName FirstName OrderNo
آدامز جان 22456
آدامز جان 24562
کارتر توماس 77895
کارتر توماس 44678

انواع مختلف SQL JOIN

علاوه بر INNER JOIN (پیوند داخلی) که در مثال‌های بالا استفاده کرده‌ایم، می‌توانیم از چندین نوع پیوند دیگر استفاده کنیم.

در زیر لیستی از انواع JOIN قابل استفاده و تفاوت‌های آنها آورده شده است.

  • JOIN: اگر در جدول حداقل یک تطابق وجود داشته باشد، ردیف‌ها بازمی‌گردد
  • LEFT JOIN: حتی اگر در جدول راست تطابق وجود نداشته باشد، همه ردیف‌های جدول چپ بازمی‌گرداند
  • RIGHT JOIN: حتی اگر در جدول چپ تطابق وجود نداشته باشد، همه ردیف‌های جدول راست بازمی‌گرداند
  • FULL JOIN: اگر در یکی از جدول‌ها تطابق وجود داشته باشد، ردیف‌ها بازمی‌گردد