SQL 联接来自多个数据库连接的多个表



我已经在这个问题上搜索了 2 天,但没有运气,所以我想是时候提出一个问题了;我知道以前有人问过这个问题,但我发现的任何东西都无法解决我的问题。我有两个来自两个不同数据库连接的表,我想对它们执行联接。到目前为止,我有:

$conn1 = odbc_connect("db-1","user","pass")
        or die ("Couldn't Connect to Server");
$conn2 = odbc_connect("db-2","user","pass")
        or die ("Couldn't Connect to Server");
$Query = 'SELECT PV_Job1.PlantCode,
       PV_Job1.JobCode, 
       PV_Jobline1.JobLineNum,
       PV_Jobline1.ItemCode,
       PM_Item1.ItemShortDesc
FROM VISION.PUB.PV_Job PV_Job1 
LEFT OUTER JOIN spec.public.specification specification
    ON PV_JobLine1.ItemCode=specification.customer_item_code
LEFT OUTER JOIN VISION.PUB.PV_Jobline PV_Jobline1
    ON (PV_Job1.CompNum=PV_JobLine1.CompNum
    AND PV_Job1.PlantCode=PV_JobLine1.PlantCode)
    AND PV_Job1.JobCode=PV_JobLine1.JobCode';
$Result = odbc_exec($conn1,$Query);

这会引发错误。这个问题的其他答案建议使用 server1.database1.dbo.table1 之类的东西,但在这种情况下,server1 和 database1 会是什么?我对SQL很陌生,我从来没有做过这样的事情。我还尝试创建一个不起作用的链接服务器。

我在您的代码中没有看到您使用连接 2 的位置。

为了简化这一点,让我们重点介绍 SQL Server 中的此代码。打开 SQL Server Management Studio 并连接到数据库。

若要编写此查询,需要一个链接服务器。您应该能够在管理工作室中创建它。您需要db-2数据库上的用户,然后可以在使用该用户的凭据登录的db-1上创建链接服务器。当您通过链接服务器运行查询时,它将使用此用户的凭据,因此请确保它对链接数据库具有db_datareader权限级别。

在你的问题中,你说它没有用。我们需要您在尝试使用链接服务器时看到的错误。

server1.database1.dbo.table1 是对链接服务器的引用。当您使用名称的第四部分 server1 时,您指的是与链接服务器的连接。

最新更新