INNER JOIN کلید SQL

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

Join و Key

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

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

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

Id_P LastName FirstName آدرس شهر
1 Adams John خیابان آکسفورد لندن
2 بوش جرج خیابان پنجم نیویورک
3 Carter Thomas خیابان چانگ‌آن پکن

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

در ادامه لطفاً جدول "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
Adams John 22456
Adams John 24562
Carter Thomas 77895
Carter Thomas 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
Adams John 22456
Adams John 24562
Carter Thomas 77895
Carter Thomas 44678

JOIN‌های مختلف SQL

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

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

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