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

كيفية دمج استعلامي JOIN on SELECT في نتيجة واحدة والربط بناءً على قيمة عمود في SQL

سعيد يوسف

السؤال

لدي استعلامين من جدولين بالشكل التالي:

-- الجدول الأول

Select  col_1  col_2

-- الجدول الثاني

Select  col_1   col_3

-- إن قمت بعمل union

col_1 col_2  -- ستكون النتيجة خطأ

-- وأنا أريد

col_1  col_2  col_3

-- عمود الدمج col_1

 

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

Recommended Posts

  • 1

استعمل subquery كالتالي:

  • سنعتبر كل استعلام جزئي جدول، ثم نطبق الدمج على هذين الجدولين
SELECT T1.col_1, T1.col_2, T2.col_3  -- جلب الأعمدة المطلوبة

FROM (SELECT col_1, col_2) AS T1     -- تعيين اسم مستعار للجدول الأول

JOIN (SELECT col_1, col_3) AS T2     -- تعيين اسم مستعار للجدول الاني

ON T1.col_1 = T2.col_1               -- عمل الربط حسب العمود المطلوب

لتجنب القيم الفارغة:

  • إما تختار عمل ربط / دمج يساري  LEFT JOIN في MySQL
  • استخدام الدالة COALESCE التي تعيد أول قيمة غير فارغة من الحقلين المتشابهين (T1.col_1, T2.col_1) COALESCE
    SELECT 
    	COALESCE(T1.col_1, T2.col_1),    -- لاحظ استخدام COALESCE
    	T1.col_2, 
    	T2.col_3  
    
    FROM (SELECT col_1, col_2) AS T1     -- تعيين اسم مستعار للجدول الأول
    
    JOIN (SELECT col_1, col_3) AS T2     -- تعيين اسم مستعار للجدول الاني
    
    ON T1.col_1 = T2.col_1               -- عمل الربط حسب العمود المطلوب

     

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

  • 1

يمكنك كذلك استخدام UNION ALL والتي تقوم بدمج كل الأعمدة سويا ، ونقوم باستدعاء الأعمدة غير الموجودة في الجدول الأول ك null وكذلك في الجدول الثاني  كالتالي:

SELECT col1, col2, NULL AS col3 FROM table1
UNION ALL
SELECT col1, NULL, col3 FROM table2

أو استخدام FULL OUTER JOIN مع خاصية  (false match condition (1 = 2 كالتالي:

SELECT COALESCE(t1.a, t2.a) AS col1, t1.col2,t2.col3
FROM Table1 t1 FULL OUTER JOIN Table2 t2 ON 1 = 2

 

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

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...