J'ai un formulaire qui affiche une liste de systèmes avec leur état actuel. L'utilisateur peut changer l'état et la date de ce changement d'état est stockée dans une table d'historique. L'utilisateur peut également modifier le nom du serveur en cas de changement d'état (par exemple, si un système est remplacé en raison d'un appel de bail).SQL Server 2000: mise à jour d'une table avec des valeurs d'une autre table
La table d'historique stocke les détails par systemname
. Par conséquent, si le nom du système change sur le formulaire, l'historique doit également être mis à jour (avec tous les changements historiques). Sur le formulaire, il y a un champ caché nommé originalsystemName
donc nous savons si le systemname
correspond ou non lorsque le formulaire est sauvegardé. Je suis venu avec la requête suivante, mais j'obtiens une erreur (voir ci-dessous la requête)
update SysHistory set
SystemName = (
select distinct t.systemname
from systemInfo_tmp t, SysHistory h
where t.systemname != t.originalSystemName
)
where systemname in (
select distinct t1.originalSystemName
from systemInfo_tmp t1, SysHistory h1
where t1.systemname != t1.originalSystemName
)
erreur que je reçois:
sous-requête amène à plus de 1 valeur. Ceci n'est pas autorisé lorsque la sous-requête suit =,! =, <, < =,>,> = ou lorsque la sous-requête est utilisée comme expression.
@ michael-fredrickson merci pour les modifications. – HPWD
Juste une friandise supplémentaire au cas où ce n'était pas évident mais la table d'histoire pourrait avoir 1-100 entrées donc chaque entrée doit être mise à jour si le nom du système change (où systemname! = OriginalSystemname). – HPWD
Afin d'obtenir des solutions précises, pourriez-vous s'il vous plaît fournir quelques lignes de données d'échantillon avant et après la mise à jour (inclure également au moins une ligne que vous ne voulez pas mettre à jour). Résoudre des problèmes de mots est amusant, mais cela entraîne beaucoup d'efforts inutiles ici. –