SQL FULL OUTER JOIN Keyword

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

🔹 ساختار کلی

SELECT columns FROM table1 FULL OUTER JOIN table2 ON table1.column_name = table2.column_name;
  • همه رکوردهای table1 و table2 نمایش داده می‌شن.

  • اگر مطابق وجود داشته باشه → داده‌های هر دو جدول کنار هم میاد.

  • اگر در یکی از جدول‌ها داده‌ای مطابق نباشه → ستون‌های جدول دیگه مقدار NULL خواهند داشت.

🔹 مثال ساده

جدول: Customers

idnamecity
1AliTehran
2SaraMashhad
3RezaTabriz

جدول: Orders

order_idcustomer_idamount
1011500
1022300
1034700

کوئری:

SELECT Customers.name, Orders.amount FROM Customers FULL OUTER JOIN Orders ON Customers.id = Orders.customer_id;

📌 خروجی:

nameamount
Ali500
Sara300
RezaNULL
NULL700

توضیح:

  • علی و سارا مشتریانی هستن که سفارش دارن → داده‌هاشون ترکیب شد.

  • رضا مشتریه اما سفارشی نداره → مقدار amount برای اون NULL شد.

  • سفارش با customer_id = 4 مشتری نداره → مقدار name براش NULL شد.

🔹 FULL JOIN در دیتابیس‌ها

  • در SQL Server و Oracle پشتیبانی میشه.

  • در MySQL مستقیماً وجود نداره! (باید با ترکیب LEFT JOIN و RIGHT JOIN و استفاده از UNION شبیه‌سازی بشه).

مثال در MySQL:

SELECT Customers.name, Orders.amount FROM Customers LEFT JOIN Orders ON Customers.id = Orders.customer_id UNION SELECT Customers.name, Orders.amount FROM Customers RIGHT JOIN Orders ON Customers.id = Orders.customer_id;

نکات مهم

  • FULL OUTER JOIN ترکیبی از LEFT JOIN و RIGHT JOIN هست.

  • هر دو جدول کامل نمایش داده میشن.

  • اگر مطابق وجود نداشته باشه، مقدار ستون‌ها NULL خواهد بود.