2017-08-01 62 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

是的,它做到了!我认为我过了一会儿就复杂了。谢谢您的帮助 :) –

相关问题