سؤال

أحتفظ ببعض التعليمات البرمجية التي تستخدم عامل التشغيل *= في استعلام لقاعدة بيانات Sybase ولا يمكنني العثور على وثائق بشأنها.هل يعرف أحد ماذا يفعل *=؟أفترض أنه نوع من الانضمام.

select * from a, b where a.id *= b.id

لا أستطيع معرفة كيف يختلف هذا عن:

select * from a, b where a.id = b.id
هل كانت مفيدة؟

المحلول

من http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.dc34982_1500/html/mig_gde/mig_gde160.htm:

طاولات داخلية وخارجية

يصف مصطلحا الجدول الخارجي والجدول الداخلي موضع الجداول في صلة خارجية:

  • في الصلة اليسرى، يكون الجدول الخارجي والجدول الداخلي هما الجدولان الأيسر والأيمن على التوالي.يُشار إلى الجدول الخارجي والجدول الداخلي أيضًا بجداول الحفاظ على الصفوف وجداول توريد القيم الخالية، على التوالي.

  • في الصلة اليمنى، يكون الجدول الخارجي والجدول الداخلي هما الجدولان الأيمن والأيسر على التوالي.

على سبيل المثال، في الاستعلامات أدناه، T1 هو الجدول الخارجي وT2 هو الجدول الداخلي:

  • غادر T1 الانضمام إلى T2
  • T2 يمينًا انضم إلى T1

أو باستخدام بناء جملة Transact-SQL:

  • T1 *= T2
  • T2 =* T1

نصائح أخرى

إنه يعني صلة خارجية، وبسيط = يعني صلة داخلية.

*= is LEFT JOIN and =* is RIGHT JOIN.

(أو العكس، فأنا أنسى باستمرار لأنني لم أعد أستخدمه، ولم يعد Google مفيدًا عند البحث عن *=)

طبعا انت يجب اكتبها بهذه الطريقة:

SELECT *
FROM a
LEFT JOIN b ON b.id=a.id

بناء الجملة a,b شرير.

بناء الجملة ANSI-82

select 
    * 
from 
    a
  , b 

where 
     a.id *= b.id

أنسي-92

select 
    * 
from 
   a
  left outer join b 
      on a.id = b.id
select * from a, b where a.id = b.id

يتطلب وجود صف حيث b.id = a.id لإرجاع إجابة

select * from a, b where a.id *= b.id

سيتم ملء الأعمدة من b بالقيم الخالية عندما لا يكون هناك صف في b حيث b.id = a.id.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top