Как обновить таблицу из другой таблицы, только если счетчик результатов равен 1? - PullRequest
0 голосов
/ 05 мая 2010

У меня есть таблица из 2 таблиц в отношении один ко многим. Я хочу запустить скрипт обновления, который обновит таблицу с помощью 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.

1 Ответ

1 голос
/ 05 мая 2010

Как насчет

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
...