2017-08-01 3 views
1

タイトルは役に立ちませんが、私がやっていることはこれです。異なるテーブルからの値に基づいて値を自動的に設定するSQL

簡単にするため、私は二つのテーブルのログとログは私が持っているログに

とログイベント欄を制御と呼ばれる別のと呼ばれるものを持っているが、これは自動的にインポートされた情報により取り込まれます。 LOG CONTROLSには、手動で入力されたログイベントのリスト(入って来るイベントと一致する)があります。このテーブルには、ID番号やイベントに関するその他の詳細が割り当てられています。

ログイベントを調べ、LOG CONTROLSテーブルのIDと一致させてIDをLOGSテーブルに割り当てる列がLOGSテーブルにあります。

他のテーブルの情報に基づいて列の情報を変更する方法はいくつか見てきましたが、これらのすべてが片方向チェックのようです。つまり、ID = XがVALUE FROM OTHER TABLEに変更されています。IF VALUE = X FROM OTHER TABLE CHANGE ID FIELD TO = Y FROM OTHER TABLE

以下は、テーブルのモックアップです。

+----+-----------+----------+------------+ 
| ID | Date_Time | Event | Control ID| 
+----+-----------+----------+------------+ 
| 1 | 0/0/0  | Shutdown |   | 
| 2 | 0/0/0  | Start up |   | 
| 3 | 0/0/0  | Error |   | 
| 4 | 0/0/0  | Info  |   | 
| 5 | 0/0/0  | Shutdown |   | 
| 6 | 0/0/0  | Error |   | 
+----+-----------+----------+------------+ 

+-------------------+----------+--------+-------+ 
| Control ID  | Event | Export | Flag | 
+-------------------+----------+--------+-------+ 
| 1     | Shutdown | TRUE | TRUE | 
| 2     | Start up | TRUE | FALSE | 
| 3     | Error | TRUE | TRUE | 
| 4     | Info  | TRUE | FALSE | 
+-------------------+----------+--------+-------+ 

だから私は、イベントが何であったかに応じて、第二のテーブルからのコントロールIDと一致する最初のテーブル内のコントロールIDが必要になります。

これは意味があると思います。

何か助けや助言をいただければ幸いです。

+2

あなたがここでやろうとしているものは全く明らかではありません。実際に役立つものは、テーブル定義、サンプルデータ、および望ましい出力です。ここから始めましょう。 http://spaghettidba.com/2015/04/24/how-to-post-a-t-sql-question-on-a-public-forum/ –

答えて

2

あなたの説明から、簡単なUPDATE文はあなたが必要とするすべてであるようだ。

update logs 
set control_id = c.control_id 
from log_controls as c 
where c.event = logs.event; 
+0

そうですよ!私はそれを少し複雑にしていたと思う。助けてくれてありがとう :) –

関連する問題