English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

جملة SQL CROSS JOIN

في هذا الدرس، ستتعلم كيفية استخدام الاتصال المتقاطع في SQL للحصول على بيانات من جداول.

استخدام الاتصال المتقاطع

إذا لم يتم تحديد شرط الاتصال عند ربط الجداول، فإن نظام قاعدة البيانات سيقوم بدمج كل سطر من الجدول الأول مع كل سطر من الجدول الثاني. هذا النوع من الاتصال يُسمى بـ اتصال متقاطع أو ضرب كاردينالي. الشكل البياني للوين يوضح كيف يعمل الاتصال المتقاطع.

للتفكير في هذا بسهولة، دعنا نرى ما يليemployeesوdepartments表。

+--------+--------------+------------+---------+
| emp_id | emp_name         | hire_date         | dept_id |
+--------+--------------+------------+---------+
|         1 | Ethan Hunt     | 2001-05-01 |                 4 |
|         2 | Tony Montana | 2002-07-15 |                 1 |
|         3 | Sarah Connor | 2005-10-18 |                 5 |
|         4 | Rick Deckard | 2007-01-03 |                 3 |
|         5 | Martin Blank | 2008-06-24 |         NULL |
+--------+--------------+------------+---------+

+---------+------------------+
| dept_id | dept_name                 |
+---------+------------------+
|                 1         | Administration                 |
|                 2         | Customer Service                 |
|                 3         | Finance                         |
|                 4         | Human Resources                 |
|                 5         | Sales                         |
+---------+------------------+
جدول:  employees
جدول:  departments

عدد ردیف‌های اتصال عمودی ضرب‌مقدار تعداد ردیف‌های هر جدول است. این یک مثال ساده از عملیات اتصال عمودی است. 

SELECT t1.emp_id, t1.emp_name, t1.hire_date, t2.dept_name
FROM employees AS t1 CROSS JOIN departments AS t2;

توجه: اتصال‌های عمودی می‌تواند یک ضرب‌مقدار کارдіالی ایجاد کند یا تمام ردیف‌های یک جدول را با تمام ردیف‌های جدول دیگر ضرب کند. بنابراین، اگر یک جدول 5 ردیف داشته باشد و جدول دیگر 10 ردیف، یک جستجوی اتصال عمودی 50 ردیف ایجاد خواهد کرد، که ضرب‌مقدار 5 و 10 است. 

بعد از اجرای دستورات بالا، شما مجموعه‌ای مانند زیر را خواهید دید: 

+--------+--------------+------------+------------------+
| emp_id         | emp_name                 | hire_date           | dept_name                  |
+--------+--------------+------------+------------------+
|                 1         | Ethan Hunt            | 2001-05-01         | Administration           |
|                 2         | Tony Montana         | 2002-07-15         | Administration           |
|                 3         | Sarah Connor         | 2005-10-18         | Administration           |
|                 4         | Rick Deckard         | 2007-01-03         | Administration           |
|                 5         | Martin Blank         | 2008-06-24         | Administration           |
|                 1         | Ethan Hunt            | 2001-05-01         | Customer Service         |
|                 2         | Tony Montana         | 2002-07-15         | Customer Service         |
|      3 | Sarah Connor | 2005-10-18 | Customer Service |
|      4 | Rick Deckard | 2007-01-03 | Customer Service |
|      5 | Martin Blank | 2008-06-24 | Customer Service |
|      1 | Ethan Hunt   | 2001-05-01 | Finance          |
|      2 | Tony Montana | 2002-07-15 | Finance          |
|      3 | Sarah Connor | 2005-10-18 | Finance          |
|      4 | Rick Deckard | 2007-01-03 | Finance          |
|      5 | Martin Blank | 2008-06-24 | Finance          |
|      1 | Ethan Hunt   | 2001-05-01 | Human Resources  |
|      2 | Tony Montana | 2002-07-15 | Human Resources  |
|      3 | Sarah Connor | 2005-10-18 | Human Resources  |
|      4 | Rick Deckard | 2007-01-03 | Human Resources  |
|      5 | Martin Blank | 2008-06-24 | Human Resources  |
|      1 | Ethan Hunt   | 2001-05-01 | Sales            |
|      2 | Tony Montana | 2002-07-15 | Sales            |
|      3 | Sarah Connor | 2005-10-18 | Sales            |
|      4 | Rick Deckard | 2007-01-03 | Sales            |
|      5 | Martin Blank | 2008-06-24 | Sales            |
+--------+--------------+------------+------------------+

كما ترون، لا يفيد الاتصال التكافئي كما هو موضح في الفصول السابقة. لأن الاستعلام لم يحدد شرط الاتصال، يتم دمج كل سطر في جدول employees مع كل سطر في جدول departments. لذلك، لا تستخدم الاتصال التكافئي إلا إذا كنت متأكداً من أنك تريد استخدام الصف الأولي.