الصلة الخارجية اليسرى (الانضمام بين ثلاثة جداول)؟

StackOverflow https://stackoverflow.com/questions/294543

  •  08-07-2019
  •  | 
  •  

سؤال

لدي جدول رئيسي يجب أن أحصل على البيانات منه.لدي صلة خارجية يسرى حيث ستتطابق الحقول مع 40% من الوقت.وبعد ذلك لدي صلة أخرى حيث أحتاج إلى مطابقة البيانات من الجدول أ.

هذا هو SQL في الكود الزائف.لن يعمل هذا الاستعلام.

- هذا هو الجزء الذي أريد القيام به ولكنه لا يعمل.و H.COL3 = A.STATE ؟؟؟؟

أنا أعمل مع آي بي إم DB2.

SELECT DISTINCT
  APP_NO as app_no,
  A.STATE as state
  ...
  ... Fields
  ...
FROM 
  TABLE_A A
LEFT OUTER JOIN  
  TABLE_B HIST
ON
  HIST.COL1 = A.COL1
, TABLE_C B  
LEFT OUTER JOIN
  TABLE_D H  
ON
  H.COL2 = B.COL2
-- This is the part I want to do but doesn't work.
AND
  H.COL3 = A.STATE????
WHERE
  A.BRANCH = 'Data'
هل كانت مفيدة؟

المحلول

أعتقد أنه يمكنك إعادة كتابتها بهذه الطريقة (لكنني قد أقرأ بيانك بشكل خاطئ)

FROM 
  TABLE_A A LEFT OUTER JOIN TABLE_B HIST ON
      HIST.COL1 = A.COL1
  LEFT OUTER JOIN TABLE_D H ON 
      H.COL3 = A.STATE
  LEFT OUTER JOIN TABLE_C B ON H.COL2 = B.COL2
WHERE
  A.BRANCH = 'Data'

أيضًا، ينص مستند IBM doco الخاص بهذا الخطأ على ما يلي:

جملة ON المرتبطة بعامل تشغيل JOIN أو في عبارة MERGE غير صالحة.توضيح:

يجب أن تشير مراجع الأعمدة في عبارة ON فقط إلى أعمدة الجداول الموجودة في نطاق عبارة ON.

لذا قد أكون مخطئًا، يبدو أن عبارة ON الخاطئة عندما يكون الانضمام الخارجي "H.COL3 = A.STATE" خارج نطاق جملة On لأن الجدول A ليس في هذا النطاق.

نصائح أخرى

وماذا يحدث إذا وضعت على "وH.COL3 = A.STATE" الخاصة بك في جملة WHERE؟

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