در SQL، دستور JOIN برای ترکیب داده‌ها از دو یا چند جدول مختلف استفاده می‌شود. این ترکیب بر اساس یک ستون مشترک بین جداول انجام می‌شود.

مثال از جدول “Orders” (سفارش‌ها):

OrderIDCustomerIDOrderDate
1030821996-09-18
10309371996-09-19
10310771996-09-20

مثال از جدول “Customers” (مشتریان):

CustomerIDCustomerNameContactNameCountry
1Alfreds FutterkisteMaria AndersGermany
2Ana Trujillo Emparedados y heladosAna TrujilloMexico
3Antonio Moreno TaqueríaAntonio MorenoMexico

در این دو جدول، ستون “CustomerID” در جدول “Orders” به ستون “CustomerID” در جدول “Customers” مرتبط است. این رابطه باعث می‌شود که بتوانیم داده‌های مرتبط را از هر دو جدول به هم متصل کنیم.

نحوه استفاده از دستور JOIN

برای ترکیب داده‌ها از این دو جدول، از دستور JOIN استفاده می‌کنیم. این دستور می‌تواند اطلاعات هر دو جدول را بر اساس ستون مشترک “CustomerID” به هم متصل کند.

مثال عملی:

SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID;

در این دستور، ما از INNER JOIN استفاده کرده‌ایم. این یعنی فقط رکوردهایی که در هر دو جدول مطابقت دارند، انتخاب می‌شوند.

خروجی دستور بالا به صورت زیر خواهد بود:

OrderIDCustomerNameOrderDate
10308Ana Trujillo Emparedados y helados9/18/1996
10365Antonio Moreno Taquería11/27/1996
10383Around the Horn12/16/1996
10355Around the Horn11/15/1996
10278Berglunds snabbköp8/12/1996

در این خروجی، رکوردهایی که “CustomerID” مشابه دارند از هر دو جدول به هم متصل شده‌اند.

انواع مختلف JOIN در SQL

در SQL، انواع مختلف JOIN وجود دارند که هر کدام نحوه ترکیب داده‌ها را به شیوه‌های متفاوت انجام می‌دهند. در اینجا چند نوع از مهم‌ترین آن‌ها آورده شده است:

  1. INNER JOIN
    این نوع JOIN فقط رکوردهایی را برمی‌گرداند که در هر دو جدول داده‌های مشابه دارند. در مثال قبلی، ما از این نوع JOIN استفاده کردیم.

  2. LEFT (OUTER) JOIN
    این نوع JOIN تمام رکوردها را از جدول سمت چپ (جدول اول) برمی‌گرداند و فقط رکوردهای مشابه از جدول سمت راست (جدول دوم) را نشان می‌دهد. اگر در جدول سمت راست رکوردی نباشد، مقدار آن ستون NULL خواهد بود.

SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
LEFT JOIN Customers ON Orders.CustomerID = Customers.CustomerID;

3. نوع RIGHT (OUTER) JOIN
مشابه LEFT JOIN است، با این تفاوت که تمام رکوردها را از جدول سمت راست (جدول دوم) برمی‌گرداند و رکوردهای مشابه از جدول سمت چپ را نشان می‌دهد.

SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
RIGHT JOIN Customers ON Orders.CustomerID = Customers.CustomerID;

4. نوع FULL (OUTER) JOIN
این نوع JOIN تمام رکوردها را از هر دو جدول برمی‌گرداند. اگر در یک جدول رکوردی مشابه نداشته باشد، ستون‌های آن جدول NULL خواهند بود.

SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
FULL OUTER JOIN Customers ON Orders.CustomerID = Customers.CustomerID;
img full outer join
img right join 1
img left join
img inner join

تمرین و چالش برای شما:

  1. تمرین 1: سعی کنید یک دستور LEFT JOIN بنویسید که تمام سفارش‌ها را به همراه نام مشتریان برگرداند. در صورتی که مشتریان سفارش نداشته باشند، نام آن‌ها به صورت NULL نمایش داده شود.

  2. تمرین 2: یک RIGHT JOIN بنویسید که تمام مشتریان و سفارش‌های آن‌ها را به نمایش بگذارد. در صورتی که مشتری سفارشی نداشته باشد، شماره سفارش NULL باشد.

نتیجه‌گیری

دستور JOIN به شما این امکان را می‌دهد که داده‌ها را از جداول مختلف بر اساس یک ستون مشترک ترکیب کنید. با استفاده از انواع مختلف JOIN می‌توانید داده‌ها را به شیوه‌های مختلف و مطابق با نیاز خود نمایش دهید.