Erstellen eines Joins basierend auf mehreren Feldern mit ArcGIS Desktop?

8

Ich habe zwei Feature-Classes in einer File-Geodatabase, denen ich basierend auf mehreren Feldern beitreten möchte. Ich habe diese Website und Google durchsucht und alles, was ich mir ausgedacht habe, war die Verwendung des Tools "Abfragetabelle erstellen". Ich habe es versucht, erhalte aber immer wieder einen SQL-Fehler. Mein SQL ist ziemlich schlecht und ich bin mir ziemlich sicher, dass mir etwas fehlt.

Ich bin mir bewusst, dass ich ein neues Feld erstellen und die Werte aus meinen Feldern verketten kann, aber ich möchte dies nach Möglichkeit vermeiden.

Ich benutze etwas, das so aussieht:

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

Wenn ich die Abfrage überprüfe, wird eine Fehlermeldung angezeigt, die besagt:

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

Wenn jemand eine andere Lösung hat, die dieses Tool nicht verwendet, bin ich froh, davon zu hören.

Fezter
quelle
Versuchen Sie, Tabelle 1 mit Tabelle 2 zu verbinden, und verbinden Sie dann Tabelle 3 mit dem Ergebnis. Es wäre auch hilfreich, wenn Sie den Abfrage-Generator (Schaltfläche [sql] im Tool "Abfragetabelle erstellen") verwenden würden, um die Syntax zu überprüfen.
Nagytech
Beachten Sie, dass es nur zwei Tabellen, aber drei Felder gibt. Ich verwende den Abfrage-Generator und der Fehler, den ich erhalte, wird angezeigt, wenn ich auf Überprüfen klicke. Der Join verbindet effektiv die Felder 1,2,3 aus Tabelle 1 mit den Feldern 1,2,3 aus Tabelle 2.
Fezter
Ich habe den Beitrag nicht sehr gut gelesen, es macht jetzt mehr Sinn.
Nagytech
Nur zur Erinnerung: Stellen Sie außerdem sicher, dass die Klassen oder Tabellen Teil derselben Geodatabase sind UND dass die Schlüsselfelder, auf denen der Join ausgeführt wird, vom gleichen Typ sind.

Antworten:

11

Ihre Syntax ist falsch.

Referenz

Wenn Sie die Hilfe in der Seitenleiste " Abfragetabelle erstellen" lesen :

Ausdruck (optional)

Ein SQL-Ausdruck zum Auswählen einer Teilmenge von Datensätzen. Die Syntax für den Ausdruck unterscheidet sich je nach Datenquelle geringfügig. Wenn Sie beispielsweise Datei- oder ArcSDE-Geodatabases, Shapefiles, Coverages, dBase- oder INFO-Tabellen abfragen, fügen Sie Feldnamen in doppelte Anführungszeichen ein:

"MEIN FELD"

Wenn Sie persönliche Geodatabases abfragen, fügen Sie Felder in eckige Klammern ein:

[MEIN FELD]

usw...

Das würde das richtige Format implizieren als:

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

Skript

Mit dem folgenden Python-Snippet können Sie das Tool ohne Fehler ausführen:

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/\")

Ergebnis

Geben Sie hier die Bildbeschreibung ein

Nagytech
quelle
Ich bin mir dieser Methode bewusst, wie ich in meiner Frage erwähnt habe. Ich suche nach einem anderen Weg, wenn es einen gibt.
Fezter
3
Obwohl Sie sich der Lösung bewusst sind und tatsächlich eine Lösung für Ihr Problem darstellen, ist dies bei anderen möglicherweise nicht der Fall.
Nagytech
@Fezter Ich habe meine Antwort aktualisiert, bitte schauen Sie.
Nagytech
Danke für die aktualisierte Antwort. Ich habe den Abfrage-Generator verwendet, daher habe ich angenommen, dass er automatisch die richtige Syntax für mich verwendet. Ich habe die Anführungszeichen hinzugefügt und es ist etwas weiter gekommen als zuvor. Ich kann das Tool ausführen, erhalte jedoch jetzt den folgenden Fehler: FEHLER 999999: Fehler beim Ausführen der Funktion. Ein erwartetes Feld wurde nicht gefunden oder konnte nicht ordnungsgemäß abgerufen werden. [QueryTable] Ein erwartetes Feld wurde nicht gefunden oder konnte nicht ordnungsgemäß abgerufen werden. [Table2.Field1] Ein erwartetes Feld wurde nicht gefunden oder konnte nicht ordnungsgemäß abgerufen werden. [Table2.Field1] Fehler beim Ausführen (MakeQueryTable).
Fezter
1
Ich habe die Ablehnung für Ihre Bemühungen zurückgenommen. Sehr geschätzt.
Fezter
6

(FGDB 10.2 & ArcMAP 10.2) Vielleicht eine alte Frage aufwerfen - aber ich denke, das ist relevant. Der SQL-Ersteller "Abfragetabelle erstellen" gibt beim Überprüfen einen Fehler aus, auch wenn Ihre Syntax korrekt ist. Ich habe meine Abfrage einfach ohne doppelte Anführungszeichen oder Klammern erstellt

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

und nicht verifizieren ausgewählt ; Ich habe das Tool einfach ausgeführt und meine Ausgabetabelle wurde korrekt erstellt.

Eine weitere Stackexchange-Frage, die auf diesen Fehler verweist. Überprüfen Sie die Antwort von User2118

Barrett
quelle
2
Ich bin mit einer FGDB auf dasselbe gestoßen. Ich habe das Tool einmal mit Anführungszeichen ("table.field" = "table2.field") ausgeführt, wie der erstellte Ausdrucksgenerator, und die Überprüfung und das Tool sind fehlgeschlagen. Ich habe die Anführungszeichen (table.field = table2.field) entfernt und die Überprüfung ist fehlgeschlagen, aber das Tool wurde erfolgreich ausgeführt. Sowohl ArcGIS Desktop als auch die FGDB sind 10.2.2.
Dan