Ansichtsrelation

Ressourcen aus benannten Tabellen können in einer Ansicht (Abfrage der Daten) über eine MI SQL-Anweisung durch eine Relation definiert werden. Dabei werden MapinfoSQLDataSourceDefinition für die Angabe der SQL-Abfrage und der in der Abfrage verwendete Relationsname verwendet. Es gibt zwei Möglichkeiten, eine Ansichtsrelation zu definieren: Durch Bestimmung der Definition für die Relation und Abfrage oder durch Angabe einer vorhandenen benannten Tabelle und der Abfrage.

Die benannten Ansichten basieren auf benannten Tabellen und müssen einen Primärschlüssel veröffentlichen, wenn die benannte Tabelle einen Primärschlüssel hat. Im Folgenden sind die Voraussetzungen für die Veröffentlichung eines Primärschlüssels aufgeführt:
  • Die Select-Klausel muss eine Primärschlüsselspalte enthalten.
  • Die Simple-Abfrage muss ohne Join sein.
  • Die benannte Tabelle muss Primärschlüssel-Metadaten enthalten.

Beispiel

Im folgenden Beispiel wird die in der Abfrage verwendete Relation definiert (eine Datenquelle aus einer TAB-Datei mit dem Namen „World123“). Anschließend wird die Abfrage (mit dem Namen „View123“) definiert. Beim Abrufen dieser benannten Ansichtstabelle wird der Name der MapinfoSQLDataSourceDefinition verwendet („View123“).

In diesem Beispiel verwendet die Definition den folgenden Token:

  • @filedir@: Das Verzeichnis auf dem Dateisystem, in dem sich die Datei mit der Relation befindet


<?xml version="1.0" encoding="UTF-8"?>
<NamedDataSourceDefinition version="MXP_WorkSpace_1_5" xmlns="http://www.mapinfo.com/mxp">
	<ConnectionSet>
        <NamedConnectionRef resourceID="/Samples/NamedConnections/SampleData">
            <ConnectionName>SampleData</ConnectionName>
        </NamedConnectionRef>
    </ConnectionSet>
	<DataSourceDefinitionSet>
		<TABFileDataSourceDefinition id="id2" readOnly="false">
			<DataSourceName>World123</DataSourceName>
			<FileName>@filedir@/world.tab</FileName>
		</TABFileDataSourceDefinition>
		<MapinfoSQLDataSourceDefinition id="id3" readOnly="false">
			<DataSourceName>View123</DataSourceName>
			<MapinfoSQLQuery>
				<Query>SELECT Country,Capital,Pop_1994,Pop_Male,Pop_Fem, Obj FROM World123 WHERE Country IN ('India','Canada','Vietnam','Brazil','China','Japan')</Query>
			</MapinfoSQLQuery>
		</MapinfoSQLDataSourceDefinition>
	</DataSourceDefinitionSet>
	<DataSourceRef ref="id3"/>
</NamedDataSourceDefinition>	

Im folgenden Beispiel handelt es sich bei der in der Abfrage verwendeten Relation um eine vorhandene benannte Tabelle, die bereits im Repository definiert worden ist. Sie müssen die benannte Tabelle in der Datenbank mit einer NamedDataSourceDefinitionRef im vollständigen Pfad angeben. Anschließend wird die Abfrage mit dieser benannten Tabelle definiert (und der vollständige Pfad zur benannten Tabelle wird angegeben). Beim Abrufen dieser benannten Ansichtstabelle wird der Name der MapinfoSQLDataSourceDefinition verwendet („View123“).

<?xml version="1.0" encoding="UTF-8"?>
<NamedDataSourceDefinition version="MXP_NamedResource_1_5" xmlns="http://www.mapinfo.com/mxp" >
	<ConnectionSet>
        <NamedConnectionRef resourceID="/Samples/NamedConnections/SampleData">
            <ConnectionName>SampleData</ConnectionName>
        </NamedConnectionRef>
    </ConnectionSet>
	<DataSourceDefinitionSet>
		<NamedDataSourceDefinitionRef id="id0" resourceID="/NamedTables/WorldTable"/>
		<MapinfoSQLDataSourceDefinition id="id3" readOnly="false">
			<DataSourceName>View123</DataSourceName>
			<MapinfoSQLQuery>
				<Query>SELECT * from "/NamedTables/WorldTable"</Query>
			</MapinfoSQLQuery>
		</MapinfoSQLDataSourceDefinition>
	</DataSourceDefinitionSet>
	<DataSourceRef ref="id3"/>
</NamedDataSourceDefinition>