كيف يمكنني تحديث جدول من جدول آخر فقط إذا كان عدد النتائج 1؟

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

سؤال

لدي جدول من جدولين في واحدة إلى العديد من العلاقة. أرغب في تشغيل برنامج نصي تحديث من شأنه تحديث الجدول باستخدام FK للجدول ذي الصلة فقط إذا كانت هناك نتيجة واحدة (لأنه إذا كان هناك عدة

هذا ما لدي حتى الآن:

UPDATE import_hourly_event_reports i
   SET i.banner_id = b.banner_id
  FROM banner b
  JOIN plan p ON b.plan_id = p.id
 WHERE b.campain_id = i.campaign_id
   AND b.size_id = i.size_id
   AND p.site_id = i.site_id
HAVING COUNT(b.banner_id) = 1

كما ترون ، HAVING البند لا يعمل تمامًا كما كنت أتوقع ذلك. أرغب فقط في تحديث الصف في جدول الاستيراد مع معرف اللافتة من جدول اللافتة إذا كان العدد يساوي 1.

هل كانت مفيدة؟

المحلول

ماذا عن

UPDATE import_hourly_event_reports i
   SET i.banner_id = b.banner_id
  FROM banner b
  JOIN plan p ON b.plan_id = p.id
 WHERE b.campain_id = i.campaign_id
   AND b.size_id = i.size_id
   AND p.site_id = i.site_id
   AND (SELECT COUNT(b1.banner_id)
          FROM banner b1
          JOIN plans p1 ON b1.plan_id = p1.id
         WHERE b1.campain_id = i.campaign_id
           AND b1.size_id = i.size_id
           AND p1.site_id = i.site_id) = 1
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top