كيف يمكنني تحديث جدول من جدول آخر فقط إذا كان عدد النتائج 1؟
-
03-10-2019 - |
سؤال
لدي جدول من جدولين في واحدة إلى العديد من العلاقة. أرغب في تشغيل برنامج نصي تحديث من شأنه تحديث الجدول باستخدام 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
لا تنتمي إلى StackOverflow