2017-08-01 45 views
1

標題可能沒有那麼有用,但我想要做的是這樣。SQL根據來自不同表格的值自動設置一個值

爲了簡單起見我有兩個表一個叫日誌和另一個稱爲登錄控制

在原木我已經和日誌事件列中,這是通過自動導入的信息填充。在LOG CONTROLS上,我有一個手動輸入的日誌事件列表(與進入的日誌事件相匹配),並且我有這張表讓他們分配ID號和其他有關該事件的詳細信息。

我需要做的是在LOGS表中有一列查看Log事件,將它與LOG CONTROLS表中的ID相匹配,並將該ID分配到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

是的,它做到了!我認爲我過了一會兒就複雜了。謝謝您的幫助 :) –

相關問題