CROSS JOIN (CROSS JOIN)
«کراس جوین (CROSS JOIN)» همه ترکیب های ممکن دو جدول را می سازد. این همان «ضرب دکارتی (Cartesian Product)» است؛ یعنی هر ردیف جدول اول با همه ردیف های جدول دوم جفت می شود. مثل سبدهای لباس و رنگ ها؛ هر لباس با هر رنگ ترکیب می شود.
کراس جوین دقیقاً چه می کند؟
کراس جوین بدون شرط، همه ترکیب ها را می دهد. بنابراین، اندازه خروجی برابر است با تعداد ردیف های جدول اول ضربدر تعداد ردیف های جدول دوم. پس باید حواست باشد؛ خروجی می تواند خیلی بزرگ شود.
سینتکس استاندارد
SELECT column_name(s);
FROM table1;
CROSS JOIN table2;
هشدار: خروجی CROSS JOIN ممکن است بسیار بزرگ شود؛ قبل از اجرا دقت کن.
مثال 1: همه مشتری ها × همه سفارش ها
در این مثال، هر مشتری با هر سفارش ترکیب می شود. این فقط برای سناریوهای خاص مفید است؛ چون معمولاً تطابق منطقی لازم داریم.
SELECT Customers.CustomerName,
Orders.OrderID;
FROM Customers;
CROSS JOIN Orders;
مثال 2: افزودن WHERE و رفتار شبیه INNER JOIN
اگر رابطه ای بین دو جدول داری، می توانی با WHERE فقط جفت های منطقی را نگه داری. در نتیجه، خروجی همانند «اینر جوین (INNER JOIN)» می شود.
SELECT Customers.CustomerName,
Orders.OrderID;
FROM Customers;
CROSS JOIN Orders;
WHERE Customers.CustomerID = Orders.CustomerID;
گام های سریع تمرین
- دو جدول را انتخاب کن؛ مثلاً Customers و Orders.
- SELECT را با ستون های خروجی بنویس.
- CROSS JOIN را بین دو جدول قرار بده.
- در صورت نیاز، شرط WHERE را اضافه کن.
- در نهایت، با ORDER BY نتیجه را منظم کن.
برای درک تفاوت ها، به INNER JOIN نگاه کن. سپس LEFT JOIN و RIGHT JOIN را مرور کن. مسیر کراس جوین را نیز نشانه گذاری کن.
جمع بندی سریع
- کراس جوین ضرب دکارتی دو جدول است.
- نتیجه می تواند بسیار بزرگ شود.
- با WHERE می توان خروجی را فیلتر کرد.
- با WHERE مناسب، شبیه INNER JOIN می شود.
- همیشه اندازه داده ها را بسنج.