2011-01-02 17 views
2

MS Access 2003に更新クエリを書きたいと思います。product_codeというフィールドがあります。複数の値を含むクエリを更新する

  • 製品コードが(110〜752)または(910〜1124の間)の場合、製品コード= 15を更新したいと考えています。
  • 製品コードが(1210〜1213の間)または(1310および1423)の場合、製品コード= 16を割り当てたいと思います。
  • 製品コードは、他の値であれば、私は18を割り当てますし、そう

に私が更新される多くの値を持っているので、私はこのためにCASE文を使用することができないと思います。複数のUPDATE/SETステートメントを使用しようとしましたが、動作しませんでした。

+1

製品コード110-752と910-1124を製品コード15に統合したいですか? – LittleBobbyTables

答えて

3

範囲と値を保持する一時テーブルを作成できます。 3つのフィールドLowId、HighId、NEWID

UPDATE TableA SET TableA.ProductID=TableB.NewId 
WHERE TableA.ProductID>=TableB.LowID AND TableA.ProductID<=TableB.HighId 
+0

変更する数字が1つまたは2つしかない場合を除き、これは私が選択する答えです。 – Fionnuala

2

でそれをTableBの呼び出しあなたがこれを達成するためにネストされたIIFステートメントを使用することができます。これは何

UPDATE Products 
SET Product_Code = IIF(
    (Product_Code BETWEEN 110 and 752) or 
     (Product_Code BETWEEN 910 AND 1124), 
    15, 
    IIF(
     (Product_Code BETWEEN 1210 and 1213) or 
     (Product_Code BETWEEN 1310 AND 1423), 
     16, 18 
     ) 
    ) 

をお使いの製品コードは、110と752または910との間にある場合でありますそれ以外の場合は、コードが1210〜1213または1310〜1423のいずれかであるかどうかをチェックします。その場合は16を使用します。それ以外の場合は、18を使用します。

注:このようにIDを更新する場合は、前の値を上書きするため、データベースをバックアップするか、少なくともテーブルをバックアップしてから実行してください。

+0

クイック返信をありがとう。私はあなたのコードを試して、それはパラメータの値を求める。私はちょうど初心者なので、私はこれが何であるか分からない! – ozlem

+0

@Ozlem - はい、テーブル名を指定しなかったか、コードを表示していないので、私のテーブル名は単なる例でした。 ** your **テーブル名を使用するようにクエリを変更する必要があります。 – LittleBobbyTables

+0

それはうまくいった!どうもありがとう! – ozlem