システムのリストとその現在のステータスを表示するフォームがあります。ユーザーはステータスを変更することができ、そのステータス変更の日付は履歴テーブルに保存されます。また、ユーザは、ステータスが変更されたときにサーバの名前を変更することもできます(たとえば、リースのためにシステムが置き換えられた場合など)。SQL Server 2000:別のテーブルの値を使用して1つのテーブルを更新する
履歴テーブルには詳細がsystemname
で保存されるため、フォーム上でシステム名が変更された場合は、履歴もすべての履歴変更とともに更新する必要があります。フォーム上にoriginalsystemName
という名前の隠しフィールドがあるので、フォームが保存されるときにsystemname
が一致するかどうかわかります。
<input type='text' name='systemname'>
<input type='text' name='originalSystemName'>
<input type='text' name='status'><input type='submit' type='submit'>
次のクエリが出ましたが、エラーが発生しました(下記のクエリを参照してください)。
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
)
エラー私が受けている:
サブクエリは複数の値を返しました。 =、!=、<、< =、>、> =、またはサブクエリが式として使用されている場合は、これは許可されません。
@ michael-fredrickson編集していただきありがとうございます。 – HPWD
システム名が変更された場合(systemname!= originalSystemname)、各エントリを更新する必要があるように、ヒストリテーブルに1〜100のエントリが含まれている可能性がある場合は、 – HPWD
正確な解決策を得るには、更新前後にいくつかの行のサンプルデータを提供してください(更新したくない行を少なくとも1つは含みます)。言葉の問題を解決するのは楽しいですが、ここでは無駄な努力がたくさんあります。 –