次のことを行うには、1 つのクエリを作成する必要があります。1) 同じサーバー上で 2 つの (informix) SQL テーブルを結合します (既に完了/動作中)。
サンプル コードでは、databaseA で tableA と tableB を使用し、databaseB で tableC を使用します。
同じデータベース上の 2 つのテーブルを結合することは問題ありません。
SELECT tableA.columnA
tableB.columnA
FROM
tableA
JOIN
tableB
ON
tableB.columnSHARED = tableA.columnSHARED
WHERE
([where clauses are inconsequential for this])
今、私がうまくいかないように見えるのは、データベースBのテーブルCの2番目のJOIN句です。すべてのテーブル/列参照にデータベース名の接頭辞を付けようとしましたが、うまくいかないようです。
明確にするために、両方のデータベースが同じサーバー上にあり、これらのコマンドを実行しているユーザーは両方のデータベースにアクセスできます。エラー メッセージを表示しますが、行 X の文字位置 Y (3 番目の結合句) の近くにエラーがあるという事実以外に、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}