0

I'm using MySQL. I have table with 3 fields: id, price, count. I need to write small billing system and I have faced with some problem. Example :

  1. User need the new computer. User writes price and count to the DB (e.g. 999, 1).
  2. Admin has ability to confirm this price or edit. If admin confirm this price and count i need to save user price and count and admin. Have I need to create duplicate fields(e.g confirmed_price, confirmed_count) and if admin has changed this price have I need to create changed_price and changed_count fields. In this variant table will have many 0 values and would anybody can recommend me another way of solving this problen
4

2 に答える 2

0

1 つの方法として、STATUS 列を 1 つ追加するだけです。

ユーザーが入力すると、1 つのステータス (入力されたばかりのことを意味します) 承認済み - 2 変更済み - 3 になります。

1 と 2 は同じ行にある可能性がありますが、変更された行は別の行になる可能性があります。取得中に max(status) を使用してこれらのレコードを取得できるため、データベースに複数の ID がある場合でも、アイテムごとに 1 つのレコードのみを取得できます。 .

ステータスの同じロジックを他の方法で使用して、同じ目的を達成することもできます。

于 2013-08-20T17:10:32.617 に答える
0

最も簡単な方法は、おそらく列を追加することですが、状況によって異なります。

元の価格/カウントが何であったかを保存する必要がない場合、列を追加するのは簡単で、次のように機能します。

|   ID   |   Price   |   Num   |   Verified   |
+--------+-----------+---------+--------------+
|   1    |    110    |    1    |       1      |
|   2    |    999    |    2    |       0      |

検証するときはUPDATE、行を保存し、保存するときVerifiedに 1 に変更できます。次に、列を持つものはすべてVerified = 0レビューが必要であり、Verified = 1検証されます。

したがって、ID 2 の Num を 3 にする必要があるとします。管理者は次のように編集します。

UPDATE myTable SET Num=3 WHERE ID=2

次に、[保存] をクリックすると、

UPDATE myTable SET Verified=1 WHERE ID=2

両方を同時に行うこともできます

UPDATE myTable SET Num=3, Verified=1 WHERE ID=2

古い値を保存したい場合は、タイムスタンプを含めることができるアーカイブ テーブルを簡単に作成できます。次に、更新を実行する前に、そのテーブルに値を挿入するだけです。

注: Count SQL のキーワードであるため、不適切な列名です。

于 2013-08-20T17:14:01.987 に答える