¿Crear unión basada en múltiples campos usando ArcGIS Desktop?

8

Tengo dos clases de entidad en una Geodatabase de archivos que me gustaría unir en función de múltiples campos. He buscado en este sitio y en Google y todo lo que se me ocurrió fue usar la herramienta Crear tabla de consulta. He intentado esto, pero sigo recibiendo un error de SQL. Mi SQL es bastante pobre y estoy bastante seguro de que me falta algo.

Soy consciente de que puedo crear un nuevo campo y concatenar los valores de mis campos, pero me gustaría evitarlo, si es posible.

Estoy usando algo que se parece a esto:

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

Cuando verifico la consulta, aparece un error que dice:

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

Además, si alguien tiene otra solución que no usa esta herramienta, me alegra saberlo.

Fezter
fuente
Intente unir la Tabla 1 a la Tabla 2, luego unir la Tabla 3 al resultado de eso. También le ayudaría si utilizara el generador de consultas (botón [sql] en la herramienta Crear tabla de consulta) para verificar la sintaxis.
nagytech
Tenga en cuenta que solo hay dos tablas pero tres campos. Estoy usando el generador de consultas y el error que recibo aparece cuando hago clic en Verificar. La unión está uniendo efectivamente los campos 1,2,3 de la tabla 1 a los campos 1,2,3 de la tabla 2.
Fezter
No leí muy bien la publicación, ahora tiene más sentido.
nagytech
Solo como recordatorio: también asegúrese de que las clases o tablas sean parte de la misma geodatabase Y asegúrese de que los campos clave en los que se operará la unión sean del mismo tipo.

Respuestas:

11

Su sintaxis es incorrecta.

Referencia

Si lee la ayuda de la barra lateral Crear tabla de consulta :

Expresión (opcional)

Una expresión SQL utilizada para seleccionar un subconjunto de registros. La sintaxis de la expresión difiere ligeramente según la fuente de datos. Por ejemplo, si está consultando un archivo o geodatabases de ArcSDE, archivos de forma, coberturas, dBase o tablas INFO, incluya los nombres de los campos entre comillas dobles:

"MI CAMPO"

Si está consultando geodatabases personales, encierre los campos entre corchetes:

[MI CAMPO]

etc ...

Eso implicaría el formato correcto como:

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

Guión

El siguiente fragmento de Python le permitirá ejecutar la herramienta sin error:

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

Resultado

ingrese la descripción de la imagen aquí

nagytech
fuente
Soy consciente de este método, como mencioné en mi pregunta. Estoy buscando otra forma, si hay una.
Fezter
3
Si bien conoce la solución y es, de hecho, una solución a su problema, otros pueden no serlo.
nagytech
@Fezter He actualizado mi respuesta, por favor, eche un vistazo.
nagytech
Gracias por la respuesta actualizada. Utilicé el generador de consultas, por lo que supuse que lo pondría automáticamente en la sintaxis correcta para mí. Agregué las citas y llegó un poco más lejos que antes. Puedo ejecutar la herramienta pero ahora aparece el siguiente error: ERROR 999999: Error al ejecutar la función. No se encontró un campo esperado o no se pudo recuperar correctamente. [Tabla de consulta] No se encontró un campo esperado o no se pudo recuperar correctamente. [Table2.Field1] No se encontró un campo esperado o no se pudo recuperar correctamente. [Table2.Field1] Error al ejecutar (MakeQueryTable).
Fezter
1
He retirado el voto negativo por su esfuerzo. Muy apreciado.
Fezter
6

(FGDB 10.2 y ArcMAP 10.2) Tal vez abriendo una vieja pregunta, pero creo que esto es relevante. El creador de SQL de Make Query Table arroja un error cuando verifica, incluso si su sintaxis es correcta. Creé mi consulta sin comillas dobles ni corchetes, simplemente

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

y no seleccionó verificar; Simplemente ejecuté la herramienta y mi tabla de salida se creó correctamente.

Otra pregunta de Stackexchange que hace referencia a este error; Revise la respuesta del usuario2118

Barrett
fuente
2
Me encontré con lo mismo con un FGDB. Ejecuté la herramienta una vez con comillas ("table.field" = "table2.field") como el generador de expresiones creado, y la verificación y la herramienta fallaron. Eliminé las comillas (table.field = table2.field) y la verificación falló, pero la herramienta se ejecutó correctamente. Tanto ArcGIS Desktop como FGDB son 10.2.2.
Dan el