يتم استخدام MySQL CROSS JOIN لدمج كافة احتمالات الجدولين أو أكثر وإرجاع النتيجة التي تحتوي على كل صف من جميع الجداول المساهمة. تُعرف CROSS JOIN أيضًا باسم CARTESIAN JOIN، والتي توفر المنتج الديكارتي لجميع الجداول المرتبطة. يمكن تفسير المنتج الديكارتي على أنه جميع الصفوف الموجودة في الجدول الأول مضروبة في جميع الصفوف الموجودة في الجدول الثاني. وهو مشابه للانضمام الداخلي، حيث لا يتوفر شرط الانضمام مع هذا البند.
يمكننا أن نفهم ذلك من خلال التمثيل المرئي التالي حيث تقوم CROSS JOIN بإرجاع جميع السجلات من الجدول 1 والجدول 2، وكل صف هو مزيج من صفوف كلا الجدولين.
MySQL CROSS JOIN بناء الجملة
يتم دائمًا استخدام الكلمة الأساسية CROSS JOIN مع عبارة SELECT ويجب كتابتها بعد جملة FROM. يقوم بناء الجملة التالي بجلب كافة السجلات من كلا الجدولين المتصلين:
أنواع البيانات SQL
SELECT column-lists FROM table1 CROSS JOIN table2;
في بناء الجملة أعلاه، قوائم الأعمدة هي اسم العمود أو الحقل الذي تريد إرجاعه، وtable1 وtable2 هو اسم الجدول الذي تقوم بإحضار السجلات منه.
مثال MySQL CROSS JOIN
دعونا نأخذ بعض الأمثلة لفهم عمل شرط الانضمام الأيسر أو الانضمام الخارجي الأيسر:
جملة CROSS JOIN لربط جدولين
هنا سنقوم بإنشاء جدولين 'عملاء' و 'جهات الاتصال' الذي يحتوي على البيانات التالية:
الجدول: العملاء
الجدول: جهات الاتصال
إلحاق سلسلة في جافا
لجلب كافة السجلات من كلا الجدولين، قم بتنفيذ الاستعلام التالي:
SELECT * FROM customers CROSS JOIN contacts;
بعد التنفيذ الناجح للاستعلام، فإنه سوف يعطي الإخراج التالي:
عند تنفيذ عبارة CROSS JOIN، ستلاحظ أنها تعرض 42 صفًا. وهذا يعني ضرب سبعة صفوف من جدول العملاء في الصفوف الستة من جدول جهات الاتصال.
ملاحظة: لتجنب تكرار الأعمدة مرتين، يوصى باستخدام أسماء الأعمدة الفردية بدلاً من عبارة SELECT *.
مشكلة الأعمدة الغامضة في MySQL CROSS JOIN
في بعض الأحيان، نحتاج إلى جلب سجلات الأعمدة المحددة من جداول متعددة. يمكن أن تحتوي هذه الجداول على بعض أسماء الأعمدة المتشابهة. في هذه الحالة، ستؤدي عبارة MySQL CROSS JOIN إلى ظهور خطأ: اسم العمود غامض. هذا يعني أن اسم العمود موجود في كلا الجدولين، وسيحتار MySQL بشأن العمود الذي تريد عرضه. الأمثلة التالية توضح ذلك بشكل أكثر وضوحا:
SELECT customer_id, cust_name, income, order_id, price FROM customer CROSS JOIN orders;
يؤدي CROSS JOIN أعلاه إلى حدوث خطأ كما هو موضح في الصورة أدناه:
يمكن حل هذه المشكلة باستخدام اسم الجدول قبل اسم العمود. يمكن إعادة كتابة الاستعلام أعلاه على النحو التالي:
SELECT customer.customer_id, customer.cust_name, customer.income, orders.order_id, orders.price FROM customer CROSS JOIN orders;
بعد تنفيذ الاستعلام أعلاه، سنحصل على الإخراج التالي:
جافا سكريبت الأقرب
انضم إلى اليسار باستخدام جملة WHERE
يتم استخدام جملة WHERE لإرجاع منقي النتيجة من الجدول. يوضح المثال التالي ذلك من خلال جملة CROSS JOIN:
SELECT customers.customer_id, customers.cust_name, customers.income, orders.order_id, orders.price FROM customers CROSS JOIN orders USING(customer_id) WHERE price>1500 AND price<5000; < pre> <p>This statement gives the below result:</p> <img src="//techcodeview.com/img/mysql-tutorial/98/mysql-cross-join-7.webp" alt="MySQL CROSS JOIN"> <h3>MySQL CROSS JOIN Multiple Tables</h3> <p>We have already created two tables named ' <strong>customers'</strong> and ' <strong>orders'</strong> . Let us create one more table and name it as ' <strong>contacts' that contains the following data:</strong> </p> <img src="//techcodeview.com/img/mysql-tutorial/98/mysql-cross-join-8.webp" alt="MySQL CROSS JOIN"> <p>Here, we are going to explain CROSS JOIN with LEFT JOIN using three tables. Execute the following statement to join the three table customers, orders, and contacts. In this statement, first CROSS JOIN completed between orders and contacts, and then LEFT JOIN executes according to the specified condition.</p> <pre> SELECT * FROM customer LEFT JOIN(orders CROSS JOIN contacts) ON customer.customer_id=contact_id ORDER BY income; </pre> <p>After successful execution of the above query, it will give the following output:</p> <img src="//techcodeview.com/img/mysql-tutorial/98/mysql-cross-join-9.webp" alt="MySQL CROSS JOIN"> <hr></5000;>
بعد التنفيذ الناجح للاستعلام أعلاه، فإنه سوف يعطي الإخراج التالي:
5000;>