Générer une table de requête (Gestion des données)

Niveau de licence :BasicStandardAdvanced

Récapitulatif

Cet outil applique une requête SQL à une base de données, et présente les résultats dans une couche ou une vue tabulaire. Vous pouvez utiliser une requête pour joindre plusieurs tables ou renvoyer un sous-ensemble de colonnes ou de lignes à partir des données d'origine dans la base de données.

Cet outil accepte les données d'une géodatabase ArcSDE, d'une géodatabase fichier, d'une géodatabase personnelle ou d'une connexion OLE DB.

Utilisation

Syntaxe

MakeQueryTable_management (in_table, out_table, in_key_field_option, {in_key_field}, {in_field}, {where_clause})
ParamètreExplicationType de données
in_table
[in_table,...]

Nom de la ou des tables à utiliser dans la requête. Si plusieurs tables sont répertoriées, le paramètre Expression peut être utilisé pour définir comment les joindre.

La table d'entrée peut provenir d'une géodatabase ArcSDE, d'une géodatabase fichier, d'une géodatabase personnelle ou d'une connexion OLE DB.

Table View; Raster Layer
out_table

Nom de la couche ou de la vue tabulaire qui va être créée par l'outil.

Table View;Raster Layer
in_key_field_option

Indique comment un champ ObjectID est généré, le cas échéant, pour la requête. La valeur par défaut est USE_KEY_FIELDS.

  • USE_KEY_FIELDSIndique que les champs sélectionnés dans la liste de champs clés doivent être utilisés pour définir la colonne ObjectID dynamique. Si aucun champ n'est sélectionné dans la liste des champs de clé, l'option ADD_VIRTUAL_KEY_FIELD est appliquée automatiquement.
  • ADD_VIRTUAL_KEY_FIELDIndique qu'aucun champ de clé n'a été sélectionné, mais qu'une colonne ObjectID dynamique doit être générée. Pour cela, vous devez copier les données dans un espace de travail local, géré par le système, et ajouter un champ contenant des valeurs uniques à la copie. La couche ou la vue tabulaire accède alors à la copie et utilise le champ ajouté comme champ de clé.
  • NO_KEY_FIELDIndique qu'aucune colonne ObjectID dynamique ne doit être générée. Si vous activez cette option, les sélections ne sont pas prises en charge pour la vue tabulaire. Si une colonne de ObjectID existe déjà dans la liste des champs, elle est utilisée comme ObjectID, même si cette option est choisie.
String
in_key_field
[in_key_field,...]
(Facultatif)

Spécifie un champ ou une combinaison de champs qu'il est possible d'utiliser pour identifier de manière unique une ligne dans la requête. Ce paramètre est utilisé uniquement lorsque l'option USE_KEY_FIELDS est sélectionnée.

Le bouton Ajouter un champ, qui est utilisé uniquement dans ModelBuilder, vous permet d'ajouter des champs attendus afin que vous puissiez remplir la boîte de dialogue et poursuivre la création du modèle.

Field
in_field
[[Field, {Alias}],...,...]
(Facultatif)

Champs à inclure dans la couche ou la vue tabulaire. Si un alias est défini pour un champ, ceci correspond au nom qui s'affiche. Si aucun champ n'est spécifié, tous les champs de toutes les tables sont inclus.

Value Table
where_clause
(Facultatif)

Expression SQL permettant de sélectionner un sous-ensemble d'enregistrements. Pour en savoir plus sur la syntaxe SQL, reportez-vous à la rubrique d'aide Référence SQL pour les expressions de requête utilisées dans ArcGIS.

SQL Expression

Exemple de code

Exemple d'utilisation de l'outil MakeQueryTable (fenêtre Python)

Le script de fenêtre Python suivant illustre l'utilisation de l'outil MakeQueryTable en mode immédiat.

import arcpy
from arcpy import env
env.workspace = "C:/data/data.gdb"
arcpy.MakeQueryTable_management (["Counties","codemog"], "queryout","ADD_VIRTUAL_KEY_FIELD", "",
                   [["Counties.OBJECTID", 'ObjectID'],["Counties.NAME", 'Name'],
                    ["codemog.Males", 'Males'], ["codemog.Females", 'Females']],
                   "Counties.FIPS = codemog.Fips and Counties.STATE_NAME = 'California'")
Exemple 2 d'utilisation de l'outil MakeQueryTable (script autonome)

Le script suivant est un exemple de l'utilisation de l'outil MakeQueryTable dans l'environnement de création de scripts Python.

# MakeQueryTableOLEDB.py
# Description: Create a query table from two OLE DB tables using a limited set of
#               fields and establishing an equal join.
# Author: ESRI
 
# Import system modules
import arcpy
 
try:
    # Local variables...
    tableList = ["Database Connections/balrog.odc/vtest.COUNTIES",\
                 "Database Connections/balrog.odc/vtest.CODEMOG"]
    
    fieldList = [["vtest.COUNTIES.OBJECTID", 'ObjectID'],["vtest.COUNTIES.NAME", 'Name']\
                 ["vtest.CODEMOG.Males", 'Males'],["vtest.CODEMOG.Females", 'Females']]
    whereClause = "vtest.COUNTIES.FIPS = vtest.CODEMOG.Fips" +\
                  "and vtest.COUNTIES.STATE_NAME = 'California'"
    keyField = "vtest.COUNTIES.OBJECTID"
    lyrName = "CountyCombined"
    # Make Query Table...
    arcpy.MakeQueryTable_management(tableList, lyrName,"USE_KEY_FIELDS", keyField, fieldList, whereClause)
 
    # Print the total rows
    print arcpy.GetCount_management(lyrName)
 
    # Print the fields
    Fields = arcpy.ListFields(lyrName)
    for field in Fields:
        print Field.name
        
 
    # Save as a dBASE file
    arcpy.CopyRows_management(lyrName, "C:/temp/calinfo.dbf")
 
except Exception, e:
    # If an error occurred, print line number and error message
    import traceback, sys
    tb = sys.exc_info()[2]
    print "Line %i" % tb.tb_lineno
    print e.message

Environnements

Thèmes connexes

Informations de licence

ArcGIS for Desktop Basic: Oui
ArcGIS for Desktop Standard: Oui
ArcGIS for Desktop Advanced: Oui
6/5/2014