در این مقاله از سری مقاله های آموزش SQL Server به آموزش انواع join می پردازیم :
کلید واژه Join برای ترکیب سطر های دو یا چند جدول به کار می رود. ایج ترین نوع Join –Inner join (پیوند داخلی) است که تمام سطر هایی از جدول های گوناگون را که از شرط Join پیروی می کنند فرا می خواند. بیایید نگاهی به گزیده ای از جدول "Orders"( سفارشات) در پایین بیاندازیم.
حالا نگاهی به گزیده ای از جدول "Customers" در زیر بیاندازید:
دقت داشته باشید که ستون "Customers ID" در جدول "Orders" به ستون "Customers ID" در جدول "Customers" اشاره دارد. رابطه بین دو جدول بالا ستون "Customer ID" می باشد. بنابراین اگر ما عبارت SQL زیر را که شامل (INNER JOIN) می باشد اجرا کنیم.
SELECT Orders.OrderID, Customers.CompanyName
, Orders.OrderDate
FROM Orders
INNER JOIN Customers
ON Orders.CustomerID=Customers.CustomerID;
قبل از اینکه مثال ها را ادامه دهیم انواع پیوندهایی که می توان از آنها استفاده کرد را به همراه تفاوت های آن ها بیان می کنیم.
کلید واژه INNER JOIN سطرهایی از هر دو جدول را انتخاب می کند که حداقل یک داده متناظر در ستون های مرتبط با هم داشته باشد.
SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name=table2.column_name;
یا:
SELECT column_name(s)
FROM table1
JOIN table2
ON table1.column_name=table2.column_name;
نکته :
تفاوتی بین JOIN و INNER JOIN وجود ندارد یا به عبارت دیگر INNER JOIN همان JOIN است.
در این آموزش از نمونه پایگاه داده مشهور Northwind استفاده خواهیم کرد. جدول زیر از میان جدول "Customers" انتخاب شده است:
جدول زیر نیز گزیده ای از جدول "Orders" می باشد:
عبارت SQL زیر تمام مشتریان را همراه با شماره سفارشاتشان لیست می کند:
SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
INNER JOIN Orders
ON Customers.CustomerID=Orders.CustomerID
ORDER BY Customers.CustomerName;
نکته :
عبارت کلیدی INNER JOIN سطرهایی که حداقل یک تناظر در دو جدول داشته باشند را برمی گرداند. اگر سطری در جدول Customers وجود دارد که تناظری با جدول Orders ندارد، آن سطر لیست نمی شود.
کلید واژه LEFT JOIN تمام سطر های جدول سمت چپ (table1) و آندسته از سطر های جدول سمت راست (table2) را که با جدول سمت چپ متناظر است فرا می خواند. اگر در جدول سمت راست سطر متناظری وجود نداشته باشد نتیجه در سمت راست صفرAnchor خواهد بود.
SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name=table2.column_name;
یا :
SELECT column_name(s)
FROM table1
LEFT OUTER JOIN table2
ON table1.column_name=table2.column_name;
نکته :
در برخی از پایگاه های داده LEFT JOIN به نام LEFT OUTER JOIN نیز نامیده می شود.
نحوه استفاده از کلید واژه LEFT JOIN در پایگاه داده
در این آموزش از نمونه پایگاه داده مشهور Northwind استفاده خواهیم کرد. جدول زیر از میان جدول "Customers" انتخاب شده است:
آنچه در زیر می بینید گزیده ای است از جدول "Orders":
مثال استفاده از کلید واژه LEFT JOIN
عبارت SQL زیر تمام مشتریان و سفارشاتشان را لیست می کند:
SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
LEFT JOIN Orders
ON Customers.CustomerID=Orders.CustomerID
ORDER BY Customers.CustomerName;
نکته :
کلید واژه LEFT JOIN تمام سطرهای جدول سمت چپ (Customers) را برمی گرداند حتی اگر هیچ داده متناظری برای آن در جدول سمت راست (Orders) وجود نداشته باشد.
کلید واژه RIGHT JOIN تمام سطر های جدول سمت راست (table2) و آندسته از سطر های جدول سمت چپ (table1) را که با جدول سمت راست متناظر است فرا می خواند. اگر در جدول سمت چپ سطر متناظری وجود نداشته باشد نتیجه در سمت چپ صفرAnchor خواهد بود.
SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name=table2.column_name;
یا :
SELECT column_name(s)
FROM table1
RIGHT OUTER JOIN table2
ON table1.column_name=table2.column_name;
نکته :
در برخی از پایگاه های داده RIGHT JOIN به نام RIGHT OUTER JOIN نیز نامیده می شود.
در این آموزش از نمونه پایگاه داده مشهور Northwind استفاده خواهیم کرد. جدول زیر از میان جدول "Orders" انتخاب شده است:
آنچه در زیر می بینید گزیده ای است از جدول "EmployeesAnchor":
مثال استفاده از کلید واژه RIGHT JOIN
عبارت SQL زیر لیست تمام کارمندان و سفارشات آنها را فرا می خواند:
SELECT Orders.OrderID, Employees.FirstName
FROM Orders
RIGHT JOIN Employees
ON Orders.EmployeeID=Employees.EmployeeID
ORDER BY Orders.OrderID;
نکته :
کلید واژه RIGHT JOIN تمام سطرهای جدول سمت راست (Employees) را برمی گرداند حتی اگر هیچ داده متناظری برای آن در جدول سمت چپ (Orders) وجود نداشته باشد.
کلید واژه FULL OUTER JOIN تمام ردیف های جدول سمت چپ (table1) و سمت راست (table2) را فرا می خواند. کلید واژه FULL OUTER JOIN نتایج بدست آمده از پیوند های چپ و راستAnchor را با یکدیگر ترکیب می کند.
SELECT column_name(s)
FROM table1
FULL OUTER JOIN table2
ON table1.column_name=table2.column_name;
در این آموزش از نمونه پایگاه داده مشهور Northwind استفاده خواهیم کرد. جدول زیر از میان جدول "Customers" انتخاب شده است:
مثال استفاده از کلید واژه FULL OUTER JOIN
عبارت SQL زیر تمام مشتریان و سفارشاتشان را انتخاب می کند:
SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
FULL OUTER JOIN Orders
ON Customers.CustomerID=Orders.CustomerID
ORDER BY Customers.CustomerName;
نتیجه بدست آمده از عبارت بالاAnchor به شکل زیر می باشد:
نکته :
کلید واژه FULL OUTER JOIN تمام سطرهای جدول سمت چپ (Customers) و تمام سطرهای موجود در جدول سمت راست (Orders) را بر می گرداند. اگر سطری در جدول Customers وجود دارد که تناظری در جدول Orders ندارد یا اگر سطری در جدول Orders وجود دارد که تناظری در جدول Customers ندارد با این وجود این سطرها نیز در جدول نتیجه نمایش داده خواهند شد.
با دیگر مقاله های ما در زمینه آموزش SQL Server همراه باشید..
آموزش برنامه نویسیآموزش sql server, دوره آموزش sql server, آموزش انواع join, آموزش join, join در sql,...نویسنده : پیمان کلانتری بازدید : 245