با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن . و کاربرانی که دوره آموزش کامل SQL را دنبال می کنند. در بخش های قبل شما را با دستوراتی از JOIN آشنا ساختیم. که فقط تمام رکوردهای یک جدول و بخش مشترک جدول بعدی را انتخاب می کرد. که از جمله می توان به دستور RIGHT JOIN در SQL که در بخش اخیر به آن پرداختیم اشاره کرد. اما در بخش آشنایی با دستور FULL OUTER JOIN در SQL ، شما با دستور متفاوتی از JOIN، آشنا خواهیم کرد.
دستور FULL OUTER JOIN تمام رکوردهای جدول اول و دوم را زمانیکه یک مقدار همسان در فیلد مشترک جداول باشد، بر می گرداند.
نکته: دستور FULL OUTER JOIN به مراتب، نتایج بزرگتری را نسبت به سایر دستورات باز می گرداند.
ساختار دستور FULL OUTER JOIN:
1 2 3 | SELECT column_name(s) FROM table1 FULL OUTER JOIN table2 ON table1.column_name = table2.column_name; |
در این قسمت، به بخشی از رکوردهای دو جدول که در مثال های این آموزش، از آن ها استفاده خواهیم کرد، اشاره می کنیم.
بخشی از رکوردهای جدول “Customers” :
CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
۱ | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | ۱۲۲۰۹ | Germany |
۲ | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | ۰۵۰۲۱ | Mexico |
۳ | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | ۰۵۰۲۳ | Mexico |
بخشی از رکوردهای جدول “Orders” :
OrderID | CustomerID | EmployeeID | OrderDate | ShipperID |
---|---|---|---|---|
۱۰۳۰۸ | ۲ | ۷ | ۱۹۹۶-۰۹-۱۸ | ۳ |
۱۰۳۰۹ | ۳۷ | ۳ | ۱۹۹۶-۰۹-۱۹ | ۱ |
۱۰۳۱۰ | ۷۷ | ۸ | ۱۹۹۶-۰۹-۲۰ | ۲ |
مثال زیر تمام رکوردهای جداول Customers و Orders را انتخاب می کند:
1 2 3 4 | SELECT Customers.CustomerName, Orders.OrderID FROM Customers FULL OUTER JOIN Orders ON Customers.CustomerID=Orders.CustomerID ORDER BY Customers.CustomerName; |
بخشی از نتایج کد فوق، ممکن است به شکل زیر باشد:
CustomerName | OrderID |
---|---|
Alfreds Futterkiste | |
Ana Trujillo Emparedados y helados | ۱۰۳۰۸ |
Antonio Moreno Taquería | ۱۰۳۶۵ |
۱۰۳۸۲ | |
۱۰۳۵۱ |
نکته: دستور FULL OUTER JOIN حتی اگر رکوردهایی در دو جدول باشند، که فیلد مشترک آن ها مقادیر یکسان نداشته باشد، آن ها را نیز نمایش خواهد داد.
دستور FULL OUTER JOIN تمام رکوردهای بین دو جدول مشخص شده را در نتیجه لیست می کند. و بین سایر دستورات JOIN بزرگترین نتیجه را باز می گرداند. امیدواریم که مباحث بخش آشنایی با دستور FULL OUTER JOIN در SQL ، مورد رضایت و استفاده ی شما قرار گرفته باشد.
رضا ابراهیم پور
این دستور در mysql کار نمیکنه درسته؟ دستور مشابه رو میشه معرفی کنید؟
صادق
دستور مشابهی نداره اما می تونید با استفاده از UNION این دستور رو پیاده سازی کنید.
دستور زیر برای دو جدول t1 و t2
SELECT * FROM t1
LEFT JOIN t2 ON t1.id = t2.id
UNION
SELECT * FROM t1
RIGHT JOIN t2 ON t1.id = t2.id