J'ai une table de 2 tables dans une relation un à plusieurs. Je veux exécuter un script de mise à jour qui mettra à jour la table avec le FK de la table liée seulement s'il y a un résultat (parce qu'il y a un multiple alors nous devons décider lequel utiliser, dans une autre méthode)Comment mettre à jour une table à partir d'une autre table uniquement si le nombre de résultats est 1?
Ici est ce que j'ai jusqu'à présent:
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
comme vous pouvez le voir, la clause HAVING
ne fonctionne pas tout à fait comme je l'avais s'y attendait pas. Je veux seulement mettre à jour la ligne de la table d'importation avec l'identifiant de la bannière de la table bannière si le nombre est égal à 1.
dans ce cas, il sera toujours donné 1 parce que banner_id est unique. –
Eh bien, ils partaient de votre compte (b1.banner_id) je pense. Juste adapter à sélectionner le compte de la table de plan à la place. –
Je l'accepte, car c'était la base de ma solution. Je vais également l'éditer pour le rendre précis à mon scénario. –