Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过连接3个表更新SQL_Sql_Tsql_Inner Join - Fatal编程技术网

通过连接3个表更新SQL

通过连接3个表更新SQL,sql,tsql,inner-join,Sql,Tsql,Inner Join,使用下表结构,我需要将行ID插入到已批准的表中,使用位置名称作为查找值。我该怎么做呢 我开始使用下面的代码,但没有什么作用。SQL连接不是很好,因此非常感谢您的帮助 UPDATE dbo.Approved SET dbo.Approved.Groupid=dbo.Lines.ID FROM dbo.Lines,dbo.Approved, dbo.Locations WHERE dbo.Approved.Location = dbo.Locations.Location_Name 批准 I

使用下表结构,我需要将行ID插入到已批准的表中,使用位置名称作为查找值。我该怎么做呢

我开始使用下面的代码,但没有什么作用。SQL连接不是很好,因此非常感谢您的帮助

UPDATE dbo.Approved 
SET dbo.Approved.Groupid=dbo.Lines.ID 
FROM dbo.Lines,dbo.Approved, dbo.Locations 
WHERE dbo.Approved.Location = dbo.Locations.Location_Name
批准

ID (PK) | Incident             | Location     | GroupID
--------------------------------------------------------
1       | Theft of luggage     |Oxford Circus | Null
2       | Theft of bag         |Kings Cross   | Null
线条

地点

ID (PK) | Location_Name  | LineID
---------------------------------
1       | Oxford Circus  |1
2       | Kings Cross    |2
3       | Victoria       |3

这就是我给你的建议:

UPDATE t1.Approved
SET t1.Groupid = t2.ID
FROM dbo.Approved t1
INNER JOIN dbo.Locations t2 ON t1.Location = t2.Location_Name
您不需要Lines表,因为您要插入的最后只是LineID,而不是Line_名称


希望能有所帮助,

一个问题:Where_Committed字段是什么?哎呀,不应该在那里。谢谢你发现它。你很好;)如果可能的话,您不需要一个表中的位置和另一个表中的位置\名称,这只是数据冗余,如果这不是数据仓库,您应该避免尝试进行更多规范化;)
UPDATE t1.Approved
SET t1.Groupid = t2.ID
FROM dbo.Approved t1
INNER JOIN dbo.Locations t2 ON t1.Location = t2.Location_Name