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

ما الفرق بين natural join و inner join في SQL؟

سعيد يوسف

السؤال

ما الفرق بين استخدام الدمج الطبيعي و الدمج الداخلي natural join and inner join عند عمل الاستعلامات

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

Recommended Posts

  • 1

هناك فروق كثيرة بين الطريقتين، لكن بشكل أساسي، فان الفرق يتمثل فيه كيفية عمل كل منهما:

  1. Natural Join : تقوم باختيار الأعمدة بناء على التطابق في محتوى عمود مشترك بين الجداول التي يتم الاختيار بينها، بمعني انه يبحث عن عمود مشترك ويقوم باظهار كل الخصائص بدمج الأعمدة المراد دمجها بناء على تطابق هذا العمود المشترك، أنظر المثال التالي:

تخيل أن هناك جدول للطلاب كالتالي:

StudentTable3.png.b7754144577d8856eb720d95155eb593.png

وجدول أخر للدرجات كالتالي:

MarksTable2.png.8aa15755eaef32fc3564df94f91a6b5a.png

لاحظ وجود عمود مشترك Roll_No وبه أشخاص متطابقون في كلا الجدولين (2 و 3)، اذا قمنا بتشغيل هذا الأمر:

SELECT * 
FROM Student NATURAL JOIN Marks;

فسيقوم باختيار الأشخاص المشتركون في كلا الجدولين بناء على العمود Roll_No كالتالي:

NATURAL-JOIN-TABLE3.png.e545edfc594bdef01b320168e5798f3e.png

  • Inner Join : يقوم باختيار العناصر المتشابهة تمام مثلا Natural Join لكن يقوم بارجاع العمود المشترك مرة عن كل جدول، بمعني أخر أنه يقوم بوضع كل جدول بجانب الأخر بعد بحث التطابق بين الجدولين، في المثال السابق ، لو قمنا بتشغيل الأمر:
  • SELECT * 
    FROM student S INNER JOIN Marks M ON S.Roll_No = M.Roll_No; 

    يكون الخرج على الشكل التالي:

INNERJOIN-.png.8af61f80126bd6f98a4bb0f2b6d3dda5.png

 

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

  • 1

أحد الاختلافات المهمة بين INNER JOIN و NATURAL JOIN هو عدد الأعمدة التي يتم إرجاعها, افترض لدينا الجدولين الآتيين

TableA                           TableB
  
Column1      Column2         Column1    Column3 
     
  1            2                1          3      
       

لو حاولنا استخدام  INNER JOIN كالتالي

SELECT * FROM TableA AS a INNER JOIN TableB AS b USING (Column1);
SELECT * FROM TableA AS a INNER JOIN TableB AS b ON a.Column1 = b.Column1;

سوف تكون النتيجة كالتالي

 
 a.Column1   a.Column2  b.Column1 b.Column3

 1            2         1           3      

أما لو حاولنا استخدام NATURAL JOIN فسوف تكون النتيحة كالتالي

SELECT * FROM TableA NATURAL JOIN TableB
  
Column1      Column2   Column3  

 1            2          3      

يتم تجنب العمدان المكررة

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

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...