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

ما هو مفهوم SEMI-JOIN في SQL

فاديا جميل

السؤال

Recommended Posts

  • 1

يتيح مفهوم semi-join تنفيذ عدّة عمليات أثناء الاستعلام أي في وقت تحضير البيانات ويمكنه تنفيذ عدّة استراتيجيات على البيانات والجداول مثل سحب البيانات المتعددة والمطابقة بين البيانات والتحقق وغيرها..  وبالتالي يحسّن من أداء استخدام الاستعلامات الفرعية من خلال تصفية مجموعة من صفوف البيانات rows بناءً على دمجها مع مجموعة صفوف أخرى.

أو بمعنى آخر، في حال كنا نقوم بعملية مقارنة inner-join بين جدولين، هنا يعيد الاستعلام جميع البيانات طالما هنالك تقابل بين الجدولين، ولكن في بعض الاستعلامات يلزمنا فقط معرفة في حال كان هنالك تقابل ولا نرغب بمقارنة جميع الأسطر والحصول على عددها، وهنا يمكننا استخدام مفهوم semi-join وهي تعمل بشكل مشابه للاستعلام التالي في MySQL:

SELECT * FROM A WHERE A.key IN (SELECT B.key FROM B)

وبالتالي يمكننا اختصار بعد الاستعلامات الطويلة مثل الاستعلام الذي يعتمد على left outer join:

SELECT DISTINCT c.id
FROM  customers c
      LEFT JOIN salaries s ON s.customer_id = c.id
WHERE s.customer_id IS NOT NULL

بحيث يصبح بالشكل التالي:

SELECT c.id
FROM  customers c
WHERE EXISTS (SELECT 1 FROM salaries s WHERE s.customer_id = c.id)

 

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

  • 1

ببساطة فإن semi-join هي طريقة تصفية مجموعة صفوف بناءً على تضمين صفوفها في مجموعة صفوف أخرى وهي تعادل:

SELECT * FROM A WHERE A.key IN (SELECT B.key FROM B)

ويوجد لفظ semi وذلك لانك لا تقوم فعليا بدمج الجزء الأيمن والأيسر من الجدول كما تفعل join ، نحن فقط نختار الذي قد يتحتويه الصفوف من الجدولين دون مقارنة كل الصفوف ببعضها.

المثال التالي يوضح الفكرة، تخيل هناك جدول للأستاذة كالتالي:


ID	Rank	           Salary
101	Assistant Professor	80,000
102	Associate Professor	90,000
103	Lecturer	        70,000

وجدول للطلاب هكذا:


ID	RollNo	Marks
103	2017 – 01	80
104	2017 – 02	90
105	2017 – 03	70

فإان اختيار  Student Semi Join Teacher ينتج عنه هذا الجدول:

ID	RollNo	Marks
103	2017 – 01	80

لاحظ أنه قام بإرجاع البيانات الخاصة بالطالب الذي توافق ال id الخاص به بالمعلم.

اما اذا قمنا بعمل Teacher SEMI-JOIN Student فالجدول يصبح كالتالي:

ID	Rank	Salary
103	Lecturer	70,000

لاحظ هنا أنه قام بإرجاع البيانات الخاصة بالمعلم الذي توافق ال id الخاص به بالطالب.

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

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...