INNER JOIN کلید SQL
- صفحه قبل نامهای مستعار SQL
- صفحه بعدی 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 کامل: اگر در یکی از جدولها تطابق وجود داشته باشد، ردیفها بازمیگردانند
- صفحه قبل نامهای مستعار SQL
- صفحه بعدی JOIN داخلی SQL