SQL Joins

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

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

🔹 انواع اصلی JOIN

  1. INNER JOIN → فقط رکوردهایی رو میاره که در هر دو جدول مقدار مشترک دارن.

  2. LEFT JOIN (LEFT OUTER JOIN) → تمام رکوردهای جدول سمت چپ + رکوردهای مطابق در جدول سمت راست.

  3. RIGHT JOIN (RIGHT OUTER JOIN) → تمام رکوردهای جدول سمت راست + رکوردهای مطابق در جدول سمت چپ.

  4. FULL JOIN (FULL OUTER JOIN) → تمام رکوردها از هر دو جدول، حتی اگر مطابق نداشته باشن.

🔹 ساختار کلی

SELECT columns FROM table1 JOIN table2 ON table1.column_name = table2.column_name;

🔹 مثال روی INNER JOIN

جدول: Customers

idnamecity
1AliTehran
2SaraMashhad
3RezaTabriz

جدول: Orders

order_idcustomer_idamount
1011500
1022300
1031200

کوئری:

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

📌 خروجی:

nameamount
Ali500
Sara300
Ali200


🔹 LEFT JOIN

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

📌 خروجی: تمام مشتری‌ها + سفارش‌هایشان (اگر وجود داشته باشه).

nameamount
Ali500
Sara300
Ali200
RezaNULL


🔹 RIGHT JOIN

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

📌 خروجی: تمام سفارش‌ها + نام مشتری (اگر وجود داشته باشه).

🔹 FULL JOIN

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

📌 خروجی: همه مشتری‌ها و همه سفارش‌ها، حتی اون‌هایی که مطابقت ندارن.

نکات مهم

  • INNER JOIN رایج‌ترین نوع JOIN هست.

  • وقتی می‌خواید همه رکوردهای یک جدول حفظ بشن حتی بدون داده مرتبط، از LEFT JOIN یا RIGHT JOIN استفاده کنید.

  • بعضی دیتابیس‌ها مثل MySQL مستقیماً FULL JOIN رو پشتیبانی نمی‌کنن؛ باید با UNION شبیه‌سازی بشه.