我需要制定一个查询来执行以下操作:1)在同一台服务器上加入两个(informix)SQL 表(已经完成/工作)2)在同一台服务器上加入第三个 SQL 表,但在不同的数据库中。
对于我的示例代码,让我们在 databaseA 上使用 tableA 和 tableB,在 databaseB 上使用 tableC。
在同一个数据库上连接两个表是没有问题的。
SELECT tableA.columnA
tableB.columnA
FROM
tableA
JOIN
tableB
ON
tableB.columnSHARED = tableA.columnSHARED
WHERE
([where clauses are inconsequential for this])
现在,我似乎无法工作的是 databaseB 上 tableC 的第二个 JOIN 子句。我尝试使用数据库名称前缀为所有表/列引用添加前缀,但这似乎不起作用。
澄清一下,两个数据库都在同一台服务器上,运行这些命令的用户可以访问这两个数据库。我会提供一条错误消息,但是除了在字符位置 Y 附近的 X 行(第三个连接子句)附近存在错误之外,从 Informix 中返回的实际上并没有任何有用的信息。还有一个常用链接:
databaseB.tableC.columnSHARED
我将如何/可以databaseB.tableC
加入databaseA.tableA
和databaseA.tableB
?
编辑 2:响应者的新净化查询:
SELECT FIRST 100
tableA.sharedColumn,
tableA.colA,
tableA.colB,
tableA.colC,
tableA.colD,
tableA.colE,
tableA.colF,
tableA.colG,
tableB.colA ,
databaseB:tableC.column
FROM
tableA
JOIN
tableB
ON
tableB.sharedColumn = tableA.sharedColumn
LEFT OUTER JOIN
databaseB:tableC
ON
databaseB:tableC.sharedColumn = databaseA:tableA.sharedColumn
WHERE
{where clauses}