الانتقال إلى المحتوى

مــا فائدة الCross join ؟


كيوكمبر

Recommended Posts

الاخ الكريم
فائدة Cross join تختصر يها where condtion عندما يكون عندك جملة Select statment لجدولين مختلفين كما في المثال التالي

SELECT

  first_name,last_name,

  department_name
FROM employees, departments;



وتحتاج هنا الى where condtion لعدم تكرار البيانات او عرض بيانات الجدولين بشكل متتالي
اما باستخدام cross join يمكنك اختصار ذلك وخصوصا في ان يكون الجدولين يحتوي على بيانات كثير كما في المثال

SELECT

  first_name,

  last_name,

  department_name
FROM employees CROSS JOIN departments;


وليك ملف مرفق يشرح بشكل افضل

dbs03_11_DMLSQL_2_6.pdf

رابط هذا التعليق
شارك

الاخ الكريم / كيوكمبر
الاخوة الافاضل / الاعضاء فى هذه المشاركة

عند استدعاء بيانات من جدولين مختلفين لابد من وجود شرط يتم على اساسه ربط الجدولين بحيث يتم استدعاء البيانات بشكل سليم وغير متكرر

فعند تنفيذ هذه الجملة

Select e.last_name, d.departement_name
from employees e, Department d



فسوف يظهر عدد من الصفوف يساوى حاصل ضرب عدد الصفوف فى الجدول الأول مضروف فى عدد الصفوف فى الجدول الثانى

وهذا ما يعرف بـ Cartesian Product

وفى كتابة الاستعلام بطريقة السابقة خطأ كبير مالم يحتوى على شرط الربط
هكذا

Select e.last_name, d.departement_name
From employees e, Department d
Where e.department_id = d.department_id



فيظهر مع اسم كل موظف اسم الادارة التابع لها هذه الموظف


ما دخل Cross Join فى هذا الكلام


لاجراء الاستعلام الاول والحصول على Cartesian Product ولكن باستخدام صيغ الـ SQL القياسية والمعروفة باسم SQL:1999 Syntax

لابد من استخدام Cross Join

كما يلى

Select e.last_name, d.Department_name
From Employee CROSS JION Departments



والسؤال المطروحة

ما فائدة الـ Cross Join طالما انه لابد من استخدام شرط ربط لاظهار البيانات بصورة صحيحية

واظن ان هذا المقصود من سؤال الاخ كيوكمبر

والاجابة

انه تستخدم لعمل بعض الاختبارات التى تحاكى انتاج كمية كبيرة من البيانات
مثلا تريد اختبار تقرير او نموذج للعمل على مليون صف وليس عندك جدول يحتوى على هذا العدد من الصفوف يمكن فى هذه الحالة استخدام Cross Join لربط عدة جدول وانتاج هذه العدد من الصفوف


اى لا يستخدم الـ Cross Join فى الجملة الحقيقة والسليمة

مع تحياتى

اسامه سليمان
القاهرة

تم تعديل بواسطة Osama Soliman
رابط هذا التعليق
شارك

السلام عليكم

أخي العزيز Osama Soliman

عندي سؤال،
هل نحتاج أن يكون هناك Foreign Key لكي يشتغل Cross Join؟
على أي أساس سيعرف الحقول المطلوبة ليقوم بعملية الربط ويستغني عن Where-Clause

وما هو المقصود ب

اى لا يستخدم الـ Cross Join فى الجملة الحقيقة والسليمة


والله يجزيك الخير على التوضيح تم تعديل بواسطة Naji_Ali
رابط هذا التعليق
شارك

السلام عليكم............natural joins
بارك الله فيكم cross joins الان اصبخ مفهوم بالنسبه لي ولكن natural joins .

ما طبيعة عمل natural joins وما الفائده منها هل من احد يسطتيع تفسير الجمله التاليه ومايكافئها في equijoin
select department_id,department_name,location_id,city
from departments
natural joins locations;

--------------------------------------------
select department_id,department_name,
departments.location_id,city
from departments,locations
where departments.location_id=locations.location_id;


-------------------------------
the natural join clause is baesed on all columns in the tow tables that have the same name .
يعني اسماء الحقول الي الي الها نفس الاسم او نفس القيمه ممكن حد يشرح اكثر ويبين وين الخطأ وين البديل الها ولشو عملوها اذا ما بتوفي في الشروط ......

وبارك الله فيكم جميعا

رابط هذا التعليق
شارك

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   تمت استعادة المحتوى السابق الخاص بك.   مسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

جاري التحميل
×
×
  • أضف...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية