0

一定期間に変更された回数を照会したい列を持つデータベースがあります。たとえば、ユーザー名、ユーザーのレベル、および日付があります。このデータベースにクエリを実行して、ユーザーのレベルが x 年にわたって変更された回数を確認するにはどうすればよいですか?

(stackoverflow の他の投稿を調べたところ、トリガーを使用するように言われました。しかし、私の状況では、行われた変更の数をデータベースに照会したいと考えています。私の質問に答えられない場合、これを理解するために調べる必要がある他の列を教えてください。これにはラグを使用することになっていますか?)

4

3 に答える 3

2

データベースは本質的にこの情報を取得しません。2つの提案は、データを時系列として保存することです。そのため、値を更新する代わりに、新しい行を新しい現在の値としてテーブルに追加し、古い値を期限切れにします。もう1つの方法は、関心のある列の更新数を追跡するための新しい列を追加することです。これは、コードまたはトリガーで実行できます。

于 2012-07-12T05:54:03.853 に答える
1

LOGという用語を聞いたことがありますか? 必要な変更を保存する新しいテーブルを作成する必要があります。テーブルのこのソリューションを想像できます:

  • id - int、主キー、自動インクリメント
  • table - 情報が変更されたテーブル名
  • table_id - 変更が行われたテーブルからの情報の一意の ID
  • 年 - 整数
  • 月 - 整数
  • 日 - 整数

これを知っていれば、すべてを数えることができます

于 2012-07-12T05:56:36.813 に答える
0

ユーザーが変更されるたびに別levelの新しい行を追加して、レベルの履歴を既に追跡している場合:datelevel

SELECT username, COUNT(date) - 1 AS changes
FROM table_name
WHERE date >= '2011-01-01'
GROUP BY username

これにより、2011 年 1 月 1 日以降の変更の数がわかり1ますCOUNT。これは、テーブルに単一の行を持つユーザーがレベルを変更したことがないためです。その行はユーザーの初期レベルを表します。

于 2012-07-12T06:08:36.313 に答える