آموزش sql server - آموزش join

در این مقاله از سری مقاله های آموزش 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;نتیجه ای مثل آنچه در زیر می بینید خواهد داشت.آموزش join قبل از اینکه مثال ها را ادامه دهیم انواع پیوندهایی که می توان از آنها استفاده کرد را به همراه تفاوت های آن ها بیان می کنیم.کلید واژه INNER JOIN : سطرهایی را که در هر دو جدول تناظر دارند را بر می گرداند.کلید واژه LEFT JOIN : تمامی سطرها را از جدول سمت چپ و همچنین سطر هایی را از جدول سمت راست که با جدول سمت چپ متناظر هستند را فرا می خواند.کلید واژه RIGHT JOIN : تمام سطر ها را از جدول سمت راست و همچنین سطرهایی را از جدول سمت چپ که با جدول سمت راست متناظر هستند را فرا می خواند.کلید واژه FULL JOIN : تمام ردیف های موجود در جداول را با وجود حتی یک همخوانی میان جداول فرا می خواند. https://aparat.com/v/ZUCc2 آموزش INNER JOINکلید واژه INNER JOIN سطرهایی از هر دو جدول را انتخاب می کند که حداقل یک داده متناظر در ستون های مرتبط با هم داشته باشد.فرم عبارت INNER JOINSELECT 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 است.نحوه استفاده از کلید واژه INNER JOIN در پایگاه دادهدر این آموزش از نمونه پایگاه داده مشهور Northwind استفاده خواهیم کرد. جدول زیر از میان جدول "Customers" انتخاب شده است:جدول زیر نیز گزیده ای از جدول "Orders" می باشد:آموزش انواع join : مثال استفاده از کلید واژه INNER JOINعبارت 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کلید واژه LEFT JOIN تمام سطر های جدول سمت چپ (table1) و آندسته از سطر های جدول سمت راست (table2) را که با جدول سمت چپ متناظر است فرا می خواند. اگر در جدول سمت راست سطر متناظری وجود نداشته باشد نتیجه در سمت راست صفرAnchor خواهد بود.فرم کلید واژه LEFT JOIN 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کلید واژه RIGHT JOIN تمام سطر های جدول سمت راست (table2) و آندسته از سطر های جدول سمت چپ (table1) را که با جدول سمت راست متناظر است فرا می خواند. اگر در جدول سمت چپ سطر متناظری وجود نداشته باشد نتیجه در سمت چپ صفرAnchor خواهد بود.فرم کلید واژه RIGHT JOINSELECT 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 نیز نامیده می شود.نحوه استفاده از کلید واژه RIGHT 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) وجود نداشته باشد.آموزش OUTER JOINکلید واژه FULL OUTER JOIN تمام ردیف های جدول سمت چپ (table1) و سمت راست (table2) را فرا می خواند. کلید واژه FULL OUTER JOIN نتایج بدست آمده از پیوند های چپ و راستAnchor را با یکدیگر ترکیب می کند.فرم کلید واژه FULL OUTER JOINSELECT column_name(s) FROM table1 FULL OUTER JOIN table2 ON table1.column_name=table2.column_name;نحوه استفاده از کلید واژه FULL OUTER JOIN در پایگاه دادهدر این آموزش از نمونه پایگاه داده مشهور 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 همراه باشید..