اذهب إلى المحتوى
  • 0

لماذا نستخدم CROSS JOIN في SQL؟

فاديا جميل

السؤال

Recommended Posts

  • 1

يستعمل الـ CROSS JOIN عادة لإنشاء ,إنطلاقا من جدولين, توليفة مزدوجة من كل صف من الجدول الأول مع كل صف من الجدول الثاني . 

أي إن كان الجدول الأول يحوي المعلومات : 

+++++++++++
|STUDENTS |
|---------|
|AHMED    |
|OMAR     | 
|YOUNESS  |
+++++++++++

و الجدول الثاني المعلومات : 

+++++++++++
|CARS     |
|---------|
|BMW      |
|MERCEDES | 
|HONDA    |
+++++++++++

فإن إستعمال الـ CROSS JOIN الذي سيقوم بتشكيل : 

  • سطر لأحمد بمحاذاة سطر BMW . 
  •   //      //         //      //  MERCEDES . 
  •    //      //         //      // HONDA . 

و أيضا :

  • سطر لعمر بمحاذاة سطر BMW . 
  •   //      //         //      //  MERCEDES . 
  •    //      //         //      // HONDA . 

و أيضا :

  • سطر ليونس بمحاذاة سطر BMW . 
  •   //      //         //      //  MERCEDES . 
  •    //      //         //      // HONDA . 

بمعنى أنه سيتبع منطقا كالتالي  : 

            / BMW
           /
|OMAR      ---- MERCEDES
           \
            \ HONDA


            / BMW
           /
|AHMED     --- MERCEDES
           \
            \ HONDA


            / BMW
           /
|YOUNESS   --- MERCEDES
           \
            \ HONDA

لينتج لنا مجموعة النتائج التالية : 

++++++++++++++++++++++
|STUDENTS | CARS     |
|---------|----------|
|AHMED    |BMW       |
|AHMED    |MERCEDES  |
|AHMED    |HONDA     |
|         |          |
|OMAR     |BMW       |
|OMAR     |MERCEDES  |
|OMAR     |HONDA     |
|         |          |
|YOUNESS  |BMW       |
|YOUNESS  |MERCEDES  |
|YOUNESS  |HONDA     |
++++++++++++++++++++++

يشبه هذا جداء مجموع في الجبر , إذ يتم إستعمال النشر المزدوج كطريقة لتحليل عبارة جبرية تتضمن جداء مجموع , مثال : 

(a + c )( b + d ) = ab + ad + cb + cd

سوى أن النتائج في الـ CROSS JOIN يتم نشرها كصفوف بنتيجة الإستعلام . 
السياق العام لها هو ما كالتالي : 

SELECT ColumnName_1, 
       ColumnName_2, 
       ColumnName_N
FROM [Table_1]
     CROSS JOIN [Table_2]

أو يكفي : 

SELECT ColumnName_1, 
       ColumnName_2, 
       ColumnName_N
FROM [Table_1],[Table_2]

و يتم استخدامه بغرض إنشاء مجموعة من كافة مجموعات العناصر بجدول ما بقاعدة البيانات ، مثل تشكيل مجموعات منازل ذات ألوان و أحجام معينة , هذا مع إمكانية التحكم في عناصر هاته المجموعات لونا أو حجما : 

select 
    size,
    color
from
    sizes CROSS JOIN colors
    
    

++++++++++++++++++++++
|SIZE     | COLOR    |
|---------|----------|
|XS       |RED       |
|XS       |BLUE      |
|XS       |GREY      |
|         |          |
|XM       |RED       |
|XM       |BLUE      |
|XM       |GREY      |
|         |          |
|XL       |RED       |
|XL       |GREY      |
|XL       |BLUE      |
++++++++++++++++++++++

 فلو أردنا مثلا إستثناء المنازل الحمراء , فسنتثني اللون الأحمر فقط ليتم إستثناء كل التوليفات المشكلة من حجم X و لون أحمر .. :  و هكذا .

أو ربما تريد جدولاً يحتوي على صف لكل دقيقة في اليوم ، وتريد استخدامه للتحقق من تنفيذ إجراء ما كل دقيقة ، لذلك يمكنك تجاوز ثلاثة جداول : 

select
    hour,
    minute
from
    hours CROSS JOIN minutes
    
    
++++++++++++++++++++++
|HOUR     | MINUTE   |
|---------|----------|
|13:00    |00        |
|13:00    |01        |
|13:00    |02        |
|13:00    |03        |
  .         .
  .         .
  .         .
|21:00    |55        |
|21:00    |56        |
|21:00    |57        |
|21:00    |58        |
  .         .
  .         .
  .         .
++++++++++++++++++++++    

 فهو يخلق مجموعة إحتمالات غير مكررة ,بإعتبار أن الأعمدة تحمل قيما فريدة, إبتداءا من مجموعات محدودة من العناصر . يمكن أن يكون هذا عمليا جدا في عمليات مثل إختبار التطبيق أو بذر قواعد البيانات ببيانات تجريبية . 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

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

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

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...