SQL从多个数据库连接中连接多个表

时间:2016-05-24 15:09:20

标签: php sql postgresql

我一直在搜索这个问题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很陌生,我从未做过这样的事情。我也试过创建一个无效的链接服务器。

1 个答案:

答案 0 :(得分:0)

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

为了简化这一点,让我们关注SQL Server中的这段代码。打开SQL Server Management Studio并连接到您的数据库。

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

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

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