آموزش SQL

ارتباط inner join در SQL

ارتباط inner join زمانی بکار می رود که بخواهیم رکوردهایی باز گردند که مقداری مشابه را در هر دو جدول دارند.

برای مثال دو جدول زیر را در نظر بگیرید. جدول اول categories:

CategoryIDCategoryName
1نوشت افزار
2دیجیتال
3پوشاک
جدول products:
ProductIDProductNameCategoryID
1مداد1
2خودکار1
3تی شرت3

خب حالا می خواهیم inner join را برای این دو جدول بر اساس ستون مشترکشان که CategoryID می باشد، اجرا کنیم:

SELECT ProductID, ProductName, CategoryName FROM Products INNER JOIN Categories ON Products.CategoryID = Categories.CategoryID; که خروجی آن به شکل زیر می شود:
ProductIDProductNameCategoryName
1مدادنوشت افزار
2خودکارنوشت افزار
3تی شرتپوشاک

چنانکه می بینید دسته "دیجیتال" در خروجی نیامده، چونکه CategoryID متناظری در جدول products برای آن وجود نداشت، یعنی اینکه هیچ محصولی وجود نداشت که دسته بندی "دیجیتال" داشته باشد. پس در خروجی نیامده است.

نحوه کلی استفاده از inner join

SELECT column_name(s) FROM table1 INNER JOIN table2 ON table1.column_name = table2.column_name;

بهتر است وقتی از join ها استفاده می شود، نام جدول هم به همراه ستون بیاوریم تا در صورتی که دو ستون مشابهی در دو جدول بود، مشخص باشد به کدام ستون اشاره می کنیم. البته اگر می دانید که ستون مشابهی ندارید، و بعدا هم ستون مشابهی که مربوط با کوئری باشد اضافه نمی کند، نیاز به آوردن نام جداول نیست.

SELECT Products.ProductID, Products.ProductName, Categories.CategoryName FROM Products INNER JOIN Categories ON Products.CategoryID = Categories.CategoryID;

اتصال بیش از دو جدول نیز امکان پذیر است و نحوه آن به شکل زیر می باشد.

SELECT Orders.OrderID, Customers.CustomerName, Shippers.ShipperName FROM ((Orders INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID) INNER JOIN Shippers ON Orders.ShipperID = Shippers.ShipperID);