在不同的数据库服务器上连接两个表

时间:2014-04-16 09:36:10

标签: sql

我需要加入两个表CompaniesCustomers

Companies表位于 MS SQLServer 中,Customer表位于 MySQL服务器中。

实现这一目标的最佳方法是什么?

4 个答案:

答案 0 :(得分:1)

如果我理解正确,您需要在SQL Server中而不是在代码中连接表,因为标记是sql

如果我有权利,那么你需要做一些管理任务,比如服务器链接。

Here您可以解释如何将MySQL服务器链接到MSSQL服务器。

成功链接这些服务器后,语法很简单:

SELECT 
    [column_list]
FROM companies
    JOIN [server_name].[database_name].[schema_name].[table_name]
WHERE ...

请记住,在访问链接服务器上存在的表时,您必须编写由四部分组成的名称。

答案 1 :(得分:0)

  1. 从DB1
  2. 中选择公司
  3. 从DB2中选择客户
  4. 将它们放入Map<WhatToJoinOn, Company>Map<WhatToJoinOn, Customer>
  5. 加入地图密钥,创建List<CompanyCustomer>

答案 2 :(得分:0)

要查询2个数据库,您需要2个单独的连接。在这种情况下,您还需要单独的驱动程序,因为您有一个MSSQL和一个MySQL数据库。因为您需要单独的连接,所以需要2个单独的查询。根据您的目的,您可以先检索Companies,然后对Customers WHERE company = 'some value from COMPANIES'(或其他方式)进行查询。

您也可以从他们自己的列表中的两个表中获取每一行,并在代码中比较这些列表,而不是使用查询。

答案 3 :(得分:0)

尝试以下方法:

1从SQL服务器检索Companies表中的数据,并以ArrayList<HashMap<String,String>>格式存储所需的列。

因此,将行创建为arraylist索引,将HashMap创建为响应列名的键值对。键:列名称和值作为该行的列值。

2然后从Customer表中提取数据,通过将第一个Map中的数据转换为逗号分隔格式来添加where子句。因此,创建一个类似于SQL中的连接的过滤器。

将数据添加到与之前相同的结果集数据中,从而不会在HashMap中重叠列名称。

当你需要访问第5行column7然后你写

ArrayList.get(4)获得( “column7”);

给出了逻辑,请自行实施。