Comment puis-je mettre à jour un tableau d'une autre table uniquement si le compte de résultat est 1?
-
03-10-2019 - |
Question
J'ai une table de 2 tables dans une relation un à plusieurs. Je veux lancer un script de mise à jour qui mettra à jour la table avec le FK de la table correspondante que s'il y a un résultat (parce que s'il y a plusieurs, nous devons alors décider lequel utiliser, dans une autre méthode)
Voici 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 de HAVING
ne fonctionne pas tout à fait comme je m'y attendais 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.
La solution
Qu'en est-
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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow