چگونه می‌توان در SQL چند جدول را هم‌زمان کوئری گرفت

خلاصه
1404/09/14

در SQL روش‌های مختلفی برای کوئری گرفتن از چند جدول به طور همزمان وجود دارد. انتخاب روش مناسب بستگی به نوع داده‌هایی که می‌خواهید استخراج کنید و رابطه‌ی بین جداول دارد. در اینجا

چگونه می‌توان در SQL چند جدول را هم‌زمان کوئری گرفت

در SQL روش‌های مختلفی برای کوئری گرفتن از چند جدول به طور همزمان وجود دارد. انتخاب روش مناسب بستگی به نوع داده‌هایی که می‌خواهید استخراج کنید و رابطه‌ی بین جداول دارد. در اینجا مهم‌ترین و پرکاربردترین روش‌ها را بررسی می‌کنیم:

**1. JOIN (اتصال):**

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

* **INNER JOIN:** فقط ردیف‌هایی را برمی‌گرداند که مقدار ستون مشترک در هر دو جدول مطابقت داشته باشد.

```sql
SELECT column1, column2, ...
FROM table1
INNER JOIN table2
ON table1.common_column = table2.common_column;
```

* **LEFT JOIN (یا LEFT OUTER JOIN):** تمام ردیف‌های table1 (جدول سمت چپ) را برمی‌گرداند و ردیف‌های matching از table2 (جدول سمت راست). اگر هیچ ردیفی در table2 مطابقت نداشته باشد، ستون‌های table2 مقدار NULL می‌گیرند.

```sql
SELECT column1, column2, ...
FROM table1
LEFT JOIN table2
ON table1.common_column = table2.common_column;
```

* **RIGHT JOIN (یا RIGHT OUTER JOIN):** تمام ردیف‌های table2 (جدول سمت راست) را برمی‌گرداند و ردیف‌های matching از table1 (جدول سمت چپ). اگر هیچ ردیفی در table1 مطابقت نداشته باشد، ستون‌های table1 مقدار NULL می‌گیرند.

```sql
SELECT column1, column2, ...
FROM table1
RIGHT JOIN table2
ON table1.common_column = table2.common_column;
```

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

```sql
SELECT column1, column2, ...
FROM table1
FULL JOIN table2
ON table1.common_column = table2.common_column;
```

* **CROSS JOIN:** یک محصول دکارتی از دو جدول ایجاد می‌کند. هر ردیف از table1 با هر ردیف از table2 ترکیب می‌شود. به ندرت استفاده می‌شود مگر اینکه دلیل خاصی برای آن وجود داشته باشد.

```sql
SELECT column1, column2, ...
FROM table1
CROSS JOIN table2;
```

**مثال JOIN:**

فرض کنید دو جدول داریم: `Customers` و `Orders`:

`Customers`

| CustomerID | CustomerName | City |
|------------|--------------|------------|
| 1 | John Doe | New York |
| 2 | Jane Smith | London |
| 3 | Peter Jones | Paris |

`Orders`

| OrderID | CustomerID | OrderDate |
|---------|------------|------------|
| 101 | 1 | 2023-01-15 |
| 102 | 2 | 2023-02-20 |
| 103 | 1 | 2023