سؤال
أحتفظ ببعض التعليمات البرمجية التي تستخدم عامل التشغيل *= في استعلام لقاعدة بيانات Sybase ولا يمكنني العثور على وثائق بشأنها.هل يعرف أحد ماذا يفعل *=؟أفترض أنه نوع من الانضمام.
select * from a, b where a.id *= b.id
لا أستطيع معرفة كيف يختلف هذا عن:
select * from a, b where a.id = b.id
المحلول
طاولات داخلية وخارجية
يصف مصطلحا الجدول الخارجي والجدول الداخلي موضع الجداول في صلة خارجية:
في الصلة اليسرى، يكون الجدول الخارجي والجدول الداخلي هما الجدولان الأيسر والأيمن على التوالي.يُشار إلى الجدول الخارجي والجدول الداخلي أيضًا بجداول الحفاظ على الصفوف وجداول توريد القيم الخالية، على التوالي.
في الصلة اليمنى، يكون الجدول الخارجي والجدول الداخلي هما الجدولان الأيمن والأيسر على التوالي.
على سبيل المثال، في الاستعلامات أدناه، 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.