从另一个数据库SQL Server更新字段

时间:2015-02-03 15:57:27

标签: .net vb.net

我有点问题。我有两个数据库,第一个是Gym,第二个是Prod

Gym:
----------------------
Tabela orders:
----------------------
Cod_Product
Name
-----------------------

Prod:
-----------------------
Tabela Products:
-----------------------
Id
Name
----------------------
Tabela CodProdutos:
----------------------
Cod_prod
id_prod
--------------

这里必要的是更新表格中的字段等于数据库健身房的表格的字段名称。

我想将健身房的表格命令从数据库Prod连接到表格codprodutos,然后连接到我的名为Product的表格,这样我就会按行更新行,而不是将所有行的第一行表格命令的产品。

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

由于您使用的是.NET,您可能也在使用SQL Server,因此这应该可行:

UPDATE Prod.dbo.Products SET Name = (
    SELECT Name FROM Gym.dbo.orders WHERE Cod_Product = (
        SELECT Cod_prod FROM Prod.dbo.CodProdutos WHERE id_prod = Prod.dbo.Products.Id
    )
);

如果您正在使用SQL Server,那么您可能会使用单个实例来托管这两个数据库。在这种情况下,您将能够使用以下语法来区分任一实例中的表:

<database name>.dbo.<table name>

dbo只是意味着&#34;数据库对象&#34;,它可以是表,存储过程,视图,那种东西。所以如果你说:

    Prod.dbo.Products

意思是:

table "Products", from among the database objects in the database "Prod"

通常情况下,您只需使用表格的名称即可,因为您经常会遇到两个条件:

  1. 您只是在同一个查询中弄乱一个数据库。
  2. 您还使用了所谓的&#34;默认目录&#34;,如果您不告诉数据库要查看,那么SQL Server将假设该数据库
  3. 如果您使用的是默认目录Prod,则SQL Server将采用此方法:

    SELECT * FROM Products
    

    并自动将其视为:

    SELECT * FROM Prod.dbo.Products
    

    你在问题​​的标签中提到了.NET和VB.NET,所以我非常有信心你正在使用的是SQL Server。在这种情况下,像IDE或Management Studio之类的东西可能会自动选择默认目录而不必告诉你。但是如果你想在同一个查询中使用多个数据库,这可能是你遇到的劫持。