الانتقال إلى المحتوى

تحديث بيانات جدول من جدول آخر بجملة Select واحدة


nael14

Recommended Posts

السلام عليكم ورحمة الله وبركاته :
يمكنك تحديث بيانات عمود من جدول حسب بيانات عمود من جدول آخر وذلك حسب المثال التالي :

  update schema.person p
   set    p.first_name =
   (select n.first_name
    from   schema.name n
    where  n.fcn = p.fcn)



في المثال السابق,عمود FIRST_NAME في جدول Person تم تحديثة حسب بيانات FIRST_NAME من جدول آخر حسب الشرط الموجود في جملة الWHERE.

لكن يجب الملاحظة انة في حال استرجاع اكثر من صف يظهر الخطأ التالي :
ORA-01427: single-row subquery returns
more than one row

2- في لاحظ أنة في هذا التحديث سيتم على جميع البيانات الموجودة في جدول schema.person وفي حال عدم تحقق الشرط في WHERE
يتم تحديث القيمة في FIRST_NAME بNULL .

ولتجنب ذلك:


 update schema.person p
   set    p.first_name =
   (select n.first_name
    from   schema.name n
    where  n.fcn = p.fcn)
   where  exists
   (select n.first_name
    from   schema.name n
    where  n.fcn = p.fcn)


وبتالي يتم تحديث السجلات في حال وجودها في الجدول الآخر فقط

لمستخمي قاعدة بيانات 10g
يمكن الاستغناء عن الجملة السابقة

   merge into schema.person p
   using      schema.name   n
   on        (n.fcn = p.fcn)
   when matched then
   update set p.first_name =
              n.first_name


حيث تقوم بعمل الEXISTS في الجملة السابقة.

أتمنى ان اكون قد وفقت في الشرح وأضفت لكم شيئ جديد
أخوكم : م. نائل

رابط هذا التعليق
شارك

يعطيك ربي الف الف الف عافيه

وربي روعه ويارب ماننحرم من ابداعاتك

رابط هذا التعليق
شارك

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

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

زائر
أضف رد على هذا الموضوع...

×   Pasted as rich text.   Paste as plain text instead

  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.

جاري التحميل
×
×
  • أضف...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية