ArcGIS Desktopを使用して複数のフィールドに基づいて結合を作成しますか?


8

複数のフィールドに基づいて結合したいファイルジオデータベースに2つのフィーチャクラスがあります。私はこのサイトとGoogleを検索しましたが、思いついたのはMake Query Tableツールを使用することだけでした。私はこれを試しましたが、SQLエラーが出続けます。私のSQLはかなり貧弱であり、何かが欠けていると確信しています。

新しいフィールドを作成してフィールドの値を連結できることは承知していますが、可能であればこれを避けたいと思います。

私は次のようなものを使用しています:

(Table1.Field1 = Table2.Field1) AND (Table1.Field2 = Table2.Field2) AND (Table1.Field3 = Table2.Field3)

クエリを確認すると、次のエラーが表示されます。

There was an error with the expression. 
An Invalid SQL statement was used.
An invalid SQL statement was used. [Table1]

また、誰かがこのツールを使用しない別の解決策を持っている場合、私はそれについて聞いてうれしいです。


表1を表2に結合してから、表3をその結果に結合してみてください。また、クエリビルダー(クエリテーブルの作成ツールの[sql]ボタン)を使用して構文を確認した場合にも役立ちます。
nagytech 2012

2つのテーブルしかなく、3つのフィールドがあることに注意してください。クエリビルダーを使用していますが、[確認]をクリックすると、エラーが表示されます。有効表2からフィールド1,2,3に表1からのフィールドを1,2,3接合されている参加
Fezter

私は投稿をあまりよく読みませんでしたが、今ではもっと理にかなっています。
nagytech 2012

注意点として、クラスまたはテーブルが同じジオデータベースの一部であること、および結合が操作されるキーフィールドが同じタイプであることを確認してください。

回答:


11

構文が正しくありません。

参照

Make Query Tableサイドバーのヘルプを読んだ場合:

式(オプション)

レコードのサブセットを選択するために使用されるSQL式。式の構文は、データソースによって若干異なります。たとえば、ファイルまたはArcSDEジオデータベース、シェープファイル、カバレッジ、dBase、またはINFOテーブルをクエリする場合は、フィールド名を二重引用符で囲みます。

「MY_FIELD」

パーソナルジオデータベースをクエリする場合は、フィールドを角括弧で囲みます。

[MY_FIELD]

等...

それは次のような正しい形式を意味します:

"Table2"."f1" = "Table1"."f1" AND "Table2"."f2" = "Table1"."f2" AND "Table2"."f3" = "Table1"."f3" 

脚本

次のpythonスニペットを使用すると、エラーなしでツールを実行できます。

arcpy.MakeQueryTable_management("Table1;Table2","QueryTable11111","NO_KEY_FIELD","#","Table1.f1 #;Table1.f2 #;Table1.f3 #;Table2.f1 #;Table2.f2 #;Table2.f3 #","/\Table1/\./\f1/\ = /\Table2/\./\f1/\ AND /\Table1/\./\f2/\ = /\Table2/\./\f2/\ AND /\Table1/\./\f3/\ = /\Table2/\./\f3/\")

結果

ここに画像の説明を入力してください


私の質問で述べたように、私はこの方法を知っています。もしあれば、別の方法を探しています。
Fezter

3
けれども、あなたが解決策を知っている、とされ、実際には、あなたの問題を解決するには、他の人ができない場合があります。
nagytech 2012

@Fezter回答を更新しました。ぜひご覧ください。
nagytech 2012

更新された答えをありがとう。クエリビルダーを使用したので、自動的に正しい構文に入れられると思いました。私は引用を加えました、そして、それは以前よりも少し遠くなりました。ツールを実行することはできますが、次のエラーが発生します。エラー999999:関数の実行中にエラーが発生しました。予期されたフィールドが見つからなかったか、適切に取得できませんでした。[QueryTable]予期されたフィールドが見つからなかったか、適切に取得できませんでした。[Table2.Field1]予期されたフィールドが見つからなかったか、適切に取得できませんでした。[Table2.Field1]実行に失敗しました(MakeQueryTable)。
Fezter

1
私はあなたの努力の反対票を取り戻しました。とても有難い。
Fezter

6

(FGDB 10.2とArcMAP 10.2)おそらく古い質問を開くかもしれませんが、これは関連があると思います。クエリテーブルの作成SQL作成者は、構文が正しい場合でも、確認時にエラーをスローします。二重引用符や角括弧なしでクエリを作成しました。

Table1.Field1 = Table2.Field1 AND Table1.Field2 = Table2.Field2

そして、選択していない確認してください。ツールを実行しただけで、出力テーブルは正しく作成されました。

このエラーを参照する別のStackexchange質問。User2118の回答を確認する


2
FGDBでも同じことが起こりました。作成した式ビルダーのように引用符( "table.field" = "table2.field")を使用してツールを1回実行しましたが、検証とツールが失敗しました。引用符を削除し(table.field = table2.field)、検証に失敗しましたが、ツールは正常に実行されました。ArcGIS DesktopとFGDBはどちらも10.2.2です。
Dan
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.