فهرست سرفصل‌های MySQL
خانه (HOME) مقدمه (Intro) پایگاه داده رابطه ای (RDBMS) SQL (SQL) SELECT (SELECT) WHERE (WHERE) عملگرهای AND, OR, NOT (AND, OR, NOT) مرتب سازی (ORDER BY) افزودن رکورد (INSERT INTO) مقادیر NULL (NULL Values) بروزرسانی (UPDATE) حذف (DELETE) محدودیت تعداد (LIMIT) کمینه و بیشینه (MIN and MAX) COUNT، AVG، SUM (COUNT, AVG, SUM) LIKE (LIKE) کاراکترهای عام (Wildcards) IN (IN) BETWEEN (BETWEEN) نام های مستعار (Aliases) اتصال ها (Joins) INNER JOIN (INNER JOIN) LEFT JOIN (LEFT JOIN) RIGHT JOIN (RIGHT JOIN) CROSS JOIN (CROSS JOIN) خود-اتصالی (Self Join) UNION (UNION) UNION ALL (UNION ALL) گروه بندی (GROUP BY) HAVING (HAVING) EXISTS (EXISTS) ANY و ALL (ANY, ALL) INSERT SELECT (INSERT SELECT) CASE (CASE) توابع Null (Null Functions) کامنت ها (Comments) عملگرها (Operators) ایجاد پایگاه داده (Create DB) حذف پایگاه داده (Drop DB) ایجاد جدول (Create Table) حذف جدول (Drop Table) تغییر جدول (Alter Table) قیود (Constraints) Not Null (Not Null) منحصر به فرد (Unique) کلید اصلی (Primary Key) کلید خارجی (Foreign Key) CHECK (Check) پیش فرض (Default) ایندکس (Create Index) افزایش خودکار (Auto Increment) تاریخ ها (Dates) نماها (Views) انواع داده (Data Types) توابع (MySQL Functions) ASCII (ASCII) CHAR_LENGTH (CHAR_LENGTH) CHARACTER_LENGTH (CHARACTER_LENGTH) CONCAT (CONCAT) CONCAT_WS (CONCAT_WS) FIELD (FIELD) FIND_IN_SET (FIND_IN_SET) FORMAT (FORMAT) INSERT (INSERT) INSTR (INSTR) LCASE (LCASE) LEFT (LEFT) LENGTH (LENGTH) LOCATE (LOCATE) LOWER (LOWER) LPAD (LPAD) LTRIM (LTRIM) MID (MID) POSITION (POSITION) REPEAT (REPEAT) REPLACE (REPLACE) REVERSE (REVERSE) RIGHT (RIGHT) RPAD (RPAD) RTRIM (RTRIM) SPACE (SPACE) STRCMP (STRCMP) SUBSTR (SUBSTR) SUBSTRING (SUBSTRING) SUBSTRING_INDEX (SUBSTRING_INDEX) TRIM (TRIM) UCASE (UCASE) UPPER (UPPER) ABS (ABS) ACOS (ACOS) ASIN (ASIN) ATAN (ATAN) ATAN2 (ATAN2) AVG (AVG) CEIL (CEIL) CEILING (CEILING) COS (COS) COT (COT) COUNT (COUNT) DEGREES (DEGREES) DIV (DIV) EXP (EXP) FLOOR (FLOOR) GREATEST (GREATEST) LEAST (LEAST) LN (LN) LOG (LOG) LOG10 (LOG10) LOG2 (LOG2) MAX (MAX) MIN (MIN) MOD (MOD) PI (PI) POW (POW) POWER (POWER) RADIANS (RADIANS) RAND (RAND) ROUND (ROUND) SIGN (SIGN) SIN (SIN) SQRT (SQRT) SUM (SUM) TAN (TAN) TRUNCATE (TRUNCATE) ADDDATE (ADDDATE) ADDTIME (ADDTIME) CURDATE (CURDATE) CURRENT_DATE (CURRENT_DATE) CURRENT_TIME (CURRENT_TIME) CURRENT_TIMESTAMP (CURRENT_TIMESTAMP) CURTIME (CURTIME) DATE (DATE) DATEDIFF (DATEDIFF) DATE_ADD (DATE_ADD) DATE_FORMAT (DATE_FORMAT) DATE_SUB (DATE_SUB) DAY (DAY) DAYNAME (DAYNAME) DAYOFMONTH (DAYOFMONTH) DAYOFWEEK (DAYOFWEEK) DAYOFYEAR (DAYOFYEAR) EXTRACT (EXTRACT) FROM_DAYS (FROM_DAYS) HOUR (HOUR) LAST_DAY (LAST_DAY) LOCALTIME (LOCALTIME) LOCALTIMESTAMP (LOCALTIMESTAMP) MAKEDATE (MAKEDATE) MAKETIME (MAKETIME) MICROSECOND (MICROSECOND) MINUTE (MINUTE) MONTH (MONTH) MONTHNAME (MONTHNAME) NOW (NOW) PERIOD_ADD (PERIOD_ADD) PERIOD_DIFF (PERIOD_DIFF) QUARTER (QUARTER) SECOND (SECOND) SEC_TO_TIME (SEC_TO_TIME) STR_TO_DATE (STR_TO_DATE) SUBDATE (SUBDATE) SUBTIME (SUBTIME) SYSDATE (SYSDATE) TIME (TIME) TIME_FORMAT (TIME_FORMAT) TIME_TO_SEC (TIME_TO_SEC) TIMEDIFF (TIMEDIFF) TIMESTAMP (TIMESTAMP) TO_DAYS (TO_DAYS) WEEK (WEEK) WEEKDAY (WEEKDAY) WEEKOFYEAR (WEEKOFYEAR) YEAR (YEAR) YEARWEEK (YEARWEEK) BIN (BIN) BINARY (BINARY) CASE (CASE) CAST (CAST) COALESCE (COALESCE) CONNECTION_ID (CONNECTION_ID) CONV (CONV) CONVERT (CONVERT) CURRENT_USER (CURRENT_USER) DATABASE (DATABASE) IF (IF) IFNULL (IFNULL) ISNULL (ISNULL) LAST_INSERT_ID (LAST_INSERT_ID) NULLIF (NULLIF) SESSION_USER (SESSION_USER) SYSTEM_USER (SYSTEM_USER) USER (USER) VERSION (VERSION) مثال ها (MySQL Examples) ویرایشگر (MySQL Editor) آزمون (MySQL Quiz) تمارین (MySQL Exercises) سرفصل (MySQL Syllabus) برنامه مطالعه (MySQL Study Plan) گواهینامه (MySQL Certificate)
نتیجه‌ای برای جستجو یافت نشد.
MySQL

MySQL — CROSS JOIN (CROSS JOIN)

آخرین بروزرسانی: 1404/08/18

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;

مشاهده در ادیتور

گام های سریع تمرین

  1. دو جدول را انتخاب کن؛ مثلاً Customers و Orders.
  2. SELECT را با ستون های خروجی بنویس.
  3. CROSS JOIN را بین دو جدول قرار بده.
  4. در صورت نیاز، شرط WHERE را اضافه کن.
  5. در نهایت، با ORDER BY نتیجه را منظم کن.

برای درک تفاوت ها، به INNER JOIN نگاه کن. سپس LEFT JOIN و RIGHT JOIN را مرور کن. مسیر کراس جوین را نیز نشانه گذاری کن.

جمع بندی سریع

  • کراس جوین ضرب دکارتی دو جدول است.
  • نتیجه می تواند بسیار بزرگ شود.
  • با WHERE می توان خروجی را فیلتر کرد.
  • با WHERE مناسب، شبیه INNER JOIN می شود.
  • همیشه اندازه داده ها را بسنج.