Freigeben über


Verknüpfen von Tabellen mithilfe von QueryExpression

Verwenden Sie die QueryExpression.LinkEntities-Eigenschaft , um die Daten aus verknüpften Tabellen zu beschreiben, die mit Ihrer Abfrage zurückgegeben werden sollen. Diese Eigenschaft enthält eine Auflistung von LinkEntity-Instanzen , die Folgendes beschreiben:

  • Welche verknüpften Tabellenzeilen zurückgegeben werden sollen
  • Auf welchen Spaltenwerten die Verknüpfung basieren soll
  • Welche Spalten dieser Datensätze zurückgegeben werden sollen
  • Alle Filter, die mit der Verknüpfung angewendet werden sollen

Hinweis

Die LinkEntities Eigenschaft ist schreibgeschützt. Sie können LinkEntity Instanzen zu dieser Auflistung mithilfe der Objektinitialisierung oder mithilfe der QueryExpression.AddLink-Methode hinzufügen.

Sie können auch System.Collections.ObjectModel.Collection<T>-Methoden verwenden, welche die LinkEntities-Eigenschaft erbt.

LinkEntity-Eigenschaften

Die folgende Tabelle enthält Details zu den LinkEntity-Eigenschaften:

Eigentum Description
LinkFromEntityName Der logische Name der Entität, aus der Sie eine Verknüpfung herstellen.
Verwenden Sie für ein nicht geschachteltes Objekt LinkEntity denselben Wert wie die QueryExpression.EntityName-Eigenschaft.
Verwenden Sie für eine LinkEntity, die in einer LinkEntity.LinkEntities-Sammlung verschachtelt ist, den Wert von LinkEntity.LinkToEntityName aus der übergeordneten Linkentität.
LinkToEntityName Der logische Name der Entität, mit der Sie eine Verknüpfung herstellen.
LinkFromAttributeName Der logische Name des Attributs der Entität, aus der Sie eine Verknüpfung herstellen.
LinkToAttributeName Der logische Name des Attributs der Entität, mit der Sie eine Verknüpfung herstellen.
JoinOperator Der Verknüpfungsoperator. Verwenden Sie einen Wert eines der JoinOperator-Enum-Mitglieder. Der Standardwert ist Inner, wodurch Ergebnisse auf Zeilen mit übereinstimmenden Werten in beiden Tabellen beschränkt werden.
Andere gültige Werte sind:
- LeftOuter Enthält Ergebnisse aus der übergeordneten Zeile, die keinen übereinstimmenden Wert aufweisen.
- Natural Es wird nur ein Wert der beiden verknüpften Spalten zurückgegeben, wenn ein Vorgang mit gleicher Verknüpfung ausgeführt wird und die beiden Werte identisch sind.
Diese Mitglieder wurden als erweiterte JoinOperators betrachtet:
- Exists
- In
- MatchFirstRowUsingCrossApply
Diese Mitglieder werden verwendet, um Werte in verwandten Datensätzen zu filtern:
- All
- Any
- NotAll
- NotAny
EntityAlias Der Alias für die Tabelle.
Columns Die Spalten, die für die Tabelle eingeschlossen werden sollen. Fügen Sie diese Spalten der verknüpften Tabelle mithilfe einer ColumnSet hinzu. Informationen zum Auswählen von Spalten mithilfe von QueryExpression
LinkCriteria Die komplexe Bedingung und logische Filterausdrücke, die die Ergebnisse der Abfrage filtern. Informationen zum Filtern von Zeilen mithilfe von QueryExpression
LinkEntities Die Sammlung von Verknüpfungen zwischen Entitäten, die geschachtelte Verknüpfungen enthalten können. Bis zu 15 Gesamtlinks können in eine Abfrage einbezogen werden.

Hinweis

Die Bedeutung der Eigenschaften LinkEntity.LinkFromAttributeName und LinkEntity.LinkToAttributeName ist das Gegenteil der entsprechenden Attribute from und to in FetchXml. Weitere Informationen zum Verwenden von from und to Attributen mit FetchXml

LinkEntity-Beispiel

Die folgende Abfrage gibt bis zu fünf Datensätze aus den Konto - und Kontakttabellen basierend auf der PrimaryContactId-Nachschlagespalte im Kontodatensatz zurück. Dies stellt eine n:1-Beziehung dar:

QueryExpression query = new("account")
{
      TopCount = 5,
      ColumnSet = new ColumnSet("name"),
      LinkEntities = {
            new LinkEntity()
            {
                  LinkFromEntityName = "account",
                  LinkToEntityName = "contact",
                  LinkFromAttributeName = "primarycontactid",
                  LinkToAttributeName = "contactid",
                  JoinOperator = JoinOperator.Inner,
                  EntityAlias = "contact",
                  Columns = new ColumnSet("fullname")
            }
      }
};

Die Ergebnisse sehen folgendermaßen aus:

 -----------------------------------------------------------------
 | name                             | contact.fullname           |
 -----------------------------------------------------------------
 | Litware, Inc. (sample)           | Susanna Stubberod (sample) |
 -----------------------------------------------------------------
 | Adventure Works (sample)         | Nancy Anderson (sample)    |
 -----------------------------------------------------------------
 | Fabrikam, Inc. (sample)          | Maria Campbell (sample)    |
 -----------------------------------------------------------------
 | Blue Yonder Airlines (sample)    | Sidney Higa (sample)       |
 -----------------------------------------------------------------
 | City Power & Light (sample)      | Scott Konersmann (sample)  |
 -----------------------------------------------------------------

Sie können die gesamte Abfrage mithilfe der Objektinitialisierung wie dargestellt verfassen, es wird jedoch empfohlen, die Methoden QueryExpression.AddLink und LinkEntity.AddLink zu verwenden. Diese Methoden geben einen Verweis auf den erstellten Link zurück, sodass Sie auf einfache Weise auf die Abfrage innerhalb der Auflistung zugreifen und diese ändern können. Wenn Sie beispielsweise die Abfrage auf diese Weise mithilfe der QueryExpression.AddLink-Methode verfassen:

var query = new QueryExpression("account")
{
      TopCount = 5,
      ColumnSet = new ColumnSet("name"),
};

// Link to primary contact
LinkEntity linkedPrimaryContact = query.AddLink(
      linkToEntityName: "contact",
      linkFromAttributeName: "primarycontactid",
      linkToAttributeName: "contactid",
      joinOperator: JoinOperator.Inner);

linkedPrimaryContact.EntityAlias = "primarycontact";
linkedPrimaryContact.Columns = new ColumnSet("fullname");

Sie können die Abfrage mit der LinkEntity.AddLink-Methode erweitern, um Informationen über den besitzenden Benutzer des über die linkedPrimaryContactLinkEntity Instanz verknüpften Kontakts einzuschließen.

// Link to contact owning user
LinkEntity linkedContactOwner = linkedPrimaryContact.AddLink(
      linkToEntityName: "systemuser",
      linkFromAttributeName: "owninguser",
      linkToAttributeName: "systemuserid",
      joinOperator: JoinOperator.Inner);

linkedContactOwner.EntityAlias = "owner";
linkedContactOwner.Columns = new ColumnSet("fullname");

Auf diese Weise können Sie einfacher auf die verschiedenen Teile der Abfrage zugreifen, um Anpassungen vorzunehmen.

Einschränkungen

Sie können einer Abfrage bis zu 15 LinkEntity-Instanzen hinzufügen. Jeder LinkEntity fügt der Abfrage eine JOIN hinzu und erhöht die Zeit zum Ausführen der Abfrage. Dieser Grenzwert besteht darin, die Leistung zu schützen. Wenn Sie mehr als 15 LinkEntity Instanzen zum QueryExpression.LinkEntities hinzufügen, erhalten Sie diesen Laufzeitfehler:

Name: TooManyLinkEntitiesInQuery Code: 0x8004430D
Zahl: -2147204339
Meldung: Number of link entities in query exceeded maximum limit.

Viele-zu-eins-Beziehungen

Im vorherigen Beispiel handelt es sich um eine Viele-zu-eins-Beziehung, bei der viele Konten auf einen Kontaktdatensatz verweisen können. Diese Informationen werden in der Account account_primary_contact viele-zu-eins-Beziehung definiert, die die folgenden Werte aufweist:

Eigentum Wert Kommentar
SchemaName account_primary_contact Eindeutiger Name der Beziehung.
ReferencedEntity contact Die tabelle, auf die verwiesen wird. Die 1 in der n:1-Beziehung. LinkToEntityName im vorherigen Beispiel.
ReferencedAttribute contactid Der Primärschlüssel der tabelle, auf die verwiesen wird. LinkToAttributeName im vorherigen Beispiel.
ReferencingEntity account Die Tabelle mit einer Nachschlagespalte, die auf die andere Tabelle verweist. Das n in der n:1-Beziehung. LinkFromEntityName im vorherigen Beispiel.
ReferencingAttribute primarycontactid Der Name der Nachschlagespalte. LinkFromAttributeName im vorherigen Beispiel.
RelationshipType OneToManyRelationship Eine Eins-zu-viele-Beziehung, wenn sie aus der verlinkten (einer) contact Tabelle angezeigt wird.
Eine n:1-Beziehung, wenn sie aus der referenzierendenaccount-Tabelle (n) betrachtet wird

Beziehungsinformationen abrufen

Sie können andere Tools und APIs verwenden, um Beziehungsdaten für die entsprechenden Werte von LinkToEntityName, LinkToAttributeName, LinkFromEntityName und LinkFromAttributeName nachzuschlagen. Weitere Informationen finden Sie unter:

Beispiel für eine n:1-Beziehung

In der folgenden Tabelle sind die zu verwendenden Beziehungswerte für eine n:1-Beziehung aufgeführt:

Eigentum Beziehungswert Kommentar
LinkFromEntityName ReferencingEntity Die tabelle, auf die verwiesen wird. Das n in der n:1-Beziehung. account im Beispiel für n:1-Beziehungen. In den AddLink-Methoden gibt es keinen Parameter für diese Eigenschaft, da sie aus den QueryExpression.EntityName oder LinkEntity.LinkToEntityName Eigenschaften abgeleitet werden kann.
LinkToEntityName ReferencedEntity Die Tabelle mit einem Primärschlüssel, auf den die andere Tabelle verweist. Die 1 in der n:1-Beziehung. contact im Many-to-One-Beispiel.
LinkFromAttributeName ReferencingAttribute Der Name der Nachschlagespalte. primarycontactid im viele-zu-eins-Beispiel.
LinkToAttributeName ReferencedAttribute Der Primärschlüssel der tabelle, auf die verwiesen wird. contactid im n:1-Beispiel.

Eins-zu-viele-Beziehungen

n:1- und 1:n-Beziehungen sind wie zwei Seiten einer Medaille. Die Beziehung besteht zwischen den Tabellen, sodass die Art und Weise, wie Sie sie verwenden, von der Basistabelle für Ihre Abfrage abhängt.

Hinweis

Wenn Ihre Basistabelle die Suchspalte enthält, handelt es sich um eine n:1-Beziehung. Andernfalls handelt es sich um eine Eins-zu-viele-Beziehung.

Sie können dieselben Daten wie das vorherige Beispiel aus der Kontakttabelle mit derselben Beziehung abrufen, mit Ausnahme der Seite der contact Tabelle. Verwenden Sie die Daten aus derselben Kontakt account_primary_contact 1:n-Beziehung, passen Sie die Werte jedoch für die unterschiedliche Ansicht der Beziehung an.

var query = new QueryExpression("contact")
{
      TopCount = 5,
      ColumnSet = new ColumnSet("fullname"),
};

// Link to related account
var linkedPrimaryContact = query.AddLink(
      linkToEntityName: "account",
      linkFromAttributeName: "contactid",
      linkToAttributeName: "primarycontactid",
      joinOperator: JoinOperator.Inner);

linkedPrimaryContact.EntityAlias = "account";
linkedPrimaryContact.Columns = new ColumnSet("name");

Verwenden Sie für eine Eins-zu-Viele-Beziehung die folgenden Beziehungswerte:

Eigentum Beziehungswert Kommentar
LinkFromEntityName ReferencedEntity Die tabelle, auf die verwiesen wird. Die 1 in der n:1-Beziehung. contact im 1:n-Beispiel. In den AddLink-Methoden gibt es keinen Parameter für diese Eigenschaft, da sie aus den QueryExpression.EntityName- oder LinkEntity.LinkToEntityName-Eigenschaften abgeleitet werden kann.
LinkToEntityName ReferencingEntity Die Tabelle mit einer Nachschlagespalte, die auf die andere Tabelle verweist. Das n in der n:1-Beziehung. account im 1:n-Beispiel.
LinkFromAttributeName ReferencedAttribute Der Primärschlüssel der tabelle, auf die verwiesen wird. contactid im 1:n-Beispiel.
LinkToAttributeName ReferencingAttribute Der Name der Nachschlagespalte. primarycontactid im 1:n-Beispiel.

Die Ergebnisse enthalten dieselben Datensätze und Daten wie im vorherigen Beispiel unter Verwendung der n:1-Beziehung, außer dass die "übergeordnete Entität" jetzt contact anstelle von account ist.

 -----------------------------------------------------------------
 | fullname                   | account.name                     |
 -----------------------------------------------------------------
 | Susanna Stubberod (sample) | Litware, Inc. (sample)           |
 -----------------------------------------------------------------
 | Nancy Anderson (sample)    | Adventure Works (sample)         |
 -----------------------------------------------------------------
 | Maria Campbell (sample)    | Fabrikam, Inc. (sample)          |
 -----------------------------------------------------------------
 | Sidney Higa (sample)       | Blue Yonder Airlines (sample)    |
 -----------------------------------------------------------------
 | Scott Konersmann (sample)  | City Power & Light (sample)      |
 -----------------------------------------------------------------

M:n-Beziehungen

Viele-zu-Viele-Beziehungen hängen von einer Verknüpfungstabelle ab. Eine überschneidene Tabelle hat in der Regel nur vier Spalten, aber nur zwei davon sind wichtig. Die beiden wichtigen Spalten entsprechen den Primärschlüsselspalten der teilnehmenden Tabellen.

Beispielsweise unterstützt die TeamMembership-Überschneidungstabelle die teammembership_association n:n-Beziehung zwischen SystemUser- und Team-Tabellen. Es ermöglicht Benutzern, mehreren Teams beizutreten, und Teams, mehrere Benutzer zu haben. TeamMembership enthält die folgenden Spalten: systemuserid, teamid.

Wenn Sie Informationen zu Benutzern und den Teams, zu denen sie gehören, mithilfe der teammembership_association n:n-Beziehung abrufen möchten, können Sie diese QueryExpression-Abfrage verwenden:

var query = new QueryExpression("systemuser")
{
      TopCount = 2,
      ColumnSet = new ColumnSet("fullname"),
};

LinkEntity linkedTeamMemberShip = query.AddLink(
      linkToEntityName: "teammembership",
      linkFromAttributeName: "systemuserid",
      linkToAttributeName: "systemuserid");

LinkEntity linkedTeam = linkedTeamMemberShip.AddLink(
      linkToEntityName: "team",
      linkFromAttributeName: "teamid",
      linkToAttributeName: "teamid");

linkedTeam.EntityAlias = "team";
linkedTeam.Columns = new ColumnSet("name");

Es gibt zwei LinkEntity-Instanzen .

  • linkedTeamMemberShip verbindet systemuser mit der Schnittpunkttabelle teammembership, wo systemuserid = systemuserid.
  • linkedTeam stellt eine Verbindung von der überschneidenden teammembership-Tabelle zu dem Team her, wo teamid = teamid ist.

Die Ergebnisse sollten etwa wie folgt aussehen:

 --------------------------------------
 | fullname             | team.name   |
 --------------------------------------
 | FirstName LastName   | org26ed931d |
 --------------------------------------
 | # PpdfCDSClient      | org26ed931d |
 --------------------------------------

Keine Beziehung

Es ist möglich, LinkFromAttributeName- und LinkToAttributeName-Eigenschaften anzugeben, indem Spalten verwendet werden, die nicht Teil einer definierten Beziehung sind.

Diese Abfrage findet beispielsweise Paare von Datensätzen, bei denen die Spalte "Name" eines Kontodatensatzes mit der Spalte "FullName " eines Kontaktdatensatzes übereinstimmt, unabhängig davon, ob sie in einer der Nachschlagespalten aufeinander verweisen.

var query = new QueryExpression("account")
{
      ColumnSet = new ColumnSet("name"),
};

LinkEntity linkedContact = query.AddLink(
      linkToEntityName: "contact", 
      linkFromAttributeName: "name", 
      linkToAttributeName: "fullname");
linkedContact.EntityAlias = "contact";
linkedContact.Columns = new ColumnSet("fullname");

Hinweis

Es ist wichtig, dass die Spalten, die in den LinkFromAttributeName und LinkToAttributeName Eigenschaften angegeben sind, denselben Typ aufweisen, auch wenn sie nicht an einer Beziehung beteiligt sind. Die Verwendung von Spalten unterschiedlicher Typen erfordert eine Typkonvertierung, die sich möglicherweise auf die Leistung auswirkt und bei einigen Spaltenwerten fehlschlägt.

Die folgenden Spaltentypen können nicht in LinkFromAttributeName und LinkToAttributeName Eigenschaften verwendet werden:

Einige Spalten können in LinkFromAttributeName und LinkToAttributeName Eigenschaften verwendet werden, können aber zu einer schlechten Leistung führen:

  • Spalten des Typs "Mehrere Textzeilen"
  • Spalten des Typs "Einzelne Textzeile " mit einer maximalen Länge von mehr als 850
  • Formelspalten
  • Berechnete Spalten
  • Logische Spalten

Suchen von Datensätzen, die nicht in einer Gruppe enthalten sind

Sie können QueryExpression verwenden, um eine Abfrage zu erstellen, um Datensätze zurückzugeben, die sich nicht in einem Satz befinden, indem Sie eine linke äußere Verknüpfung verwenden. Eine linke äußere Verknüpfung gibt jede Zeile zurück, die die Verknüpfung der ersten Eingabe mit der zweiten Eingabe erfüllt. Außerdem werden alle Zeilen aus der ersten Eingabe zurückgegeben, für die keine übereinstimmenden Zeilen in der zweiten Eingabe vorhanden sind. Die nicht übereinstimmenden Zeilen in der zweiten Eingabe werden als NULL-Werte zurückgegeben.

Sie können eine linke äußere Verknüpfung in QueryExpression durchführen, indem Sie die ConditionExpression.EntityName-Eigenschaft verwenden. Die EntityName Eigenschaft ist in Bedingungen, Filtern und geschachtelten Filtern gültig. Weitere Informationen zu Filtern auf LinkEntity

Die folgende Abfrage gibt beispielsweise alle Kontodatensätze ohne Kontakte zurück.

var query = new QueryExpression(entityName: "account");
query.ColumnSet.AddColumn("name");
query.AddOrder(
      attributeName: "name", 
      orderType: OrderType.Descending);
query.Criteria.AddCondition(
      entityName: "contact",
      attributeName: "parentcustomerid",
      conditionOperator: ConditionOperator.Null);

LinkEntity linkedContact = query.AddLink(
      linkToEntityName: "contact",
      linkFromAttributeName: "accountid",
      linkToAttributeName: "parentcustomerid",
      joinOperator: JoinOperator.LeftOuter);
linkedContact.EntityAlias = "contact";
linkedContact.Columns.AddColumn("fullname");

Verwenden von erweiterten JoinOperators

Die folgenden JoinOperator-Member entsprechen nicht direkt den T-SQL JOIN-Operatortypen und verwenden stattdessen Unterabfragen . Diese Typen bieten erweiterte Funktionen, die Sie verwenden können, um die Abfrageleistung zu verbessern und komplexere Abfragen zu definieren.

Name Description
Exists Eine Variante von Inner, die Leistungsvorteile bieten kann. Verwendet eine EXISTS-Bedingung in der where Klausel. Exists verwenden, wenn mehrere Kopien der übergeordneten Zeile für die Ergebnisse nicht erforderlich sind. Erfahren Sie mehr über Exists und In.
In Eine Variante von Inner, die Leistungsvorteile bieten kann. Verwendet eine IN-Bedingung in der Where-Klausel. Verwenden Sie In, wenn mehrere Kopien der übergeordneten Zeile in den Ergebnissen nicht erforderlich sind. Erfahren Sie mehr über Exists und In.
MatchFirstRowUsingCrossApply Eine Variante von Inner kann Leistungsverbesserungen bieten. Verwenden Sie diesen Typ, wenn nur ein einzelnes Beispiel einer übereinstimmenden Zeile aus der verknüpften Entität ausreichend ist und mehrere Kopien der übergeordneten Zeile in den Ergebnissen nicht erforderlich sind. Weitere Informationen zur Verwendung MatchFirstRowUsingCrossApply

Verwenden Sie JoinOperator.Exists oder JoinOperator.In

Exists und In sind Varianten von Inner, die unterschiedliche Bedingungen (EXISTS bzw. IN) in der where-Klausel verwenden, sodass das Ergebnis mehrere Kopien der übergeordneten Zeile nicht anzeigt. Weder `Exists` noch `In` geben die Spaltenwerte der verknüpften Entitätszeilen zurück.

Die Verwendung von JoinOperator.Exists oder JoinOperator.In kann die Größe von Zwischen- oder Endabfrageergebnissen reduzieren, insbesondere wenn viele passende verknüpfte Zeilen für dieselben übergeordneten Zeilen vorhanden sind oder wenn mehrere Verknüpfungselemente mit demselben übergeordneten Element verwendet werden. Die Verwendung von JoinOperator.Exists oder JoinOperator.In kann die Leistung der Abfrage im Vergleich zu JoinOperator.Inner verbessern, da es nicht erforderlich ist, ein kartesisches Produkt zurückzugeben, das alle möglichen Permutationen von Zeilen aus verschiedenen verknüpften Entitäten für jede übergeordnete Zeile enthält.

Diese JoinOperator-Elemente können Dataverse möglicherweise auch ermöglichen, nur die erste passende verlinkte Entitätszeile für jede übergeordnete Zeile zu finden. Dies ist effizienter, als alle passenden Zeilen in der verlinkten Entität zu finden.JoinOperator.Inner

JoinOperator.Exists Beispiel

Diese QueryExpression- und SQL-Beispiele zeigen die Muster, die mit JoinOperator.Exists angewendet werden.

QueryExpression query = new("contact");
query.ColumnSet.AddColumn("fullname");

LinkEntity linkedAccount = query.AddLink(
      linkToEntityName: "account",
      linkFromAttributeName: "contactid",
      linkToAttributeName: "primarycontactid",
      joinOperator: JoinOperator.Exists);

linkedAccount.EntityAlias = "account";

linkedAccount.LinkCriteria.AddCondition(
      entityName:"account", 
      attributeName: "statecode", 
      conditionOperator: ConditionOperator.Equal,
      values: 1);

JoinOperator.In Beispiel

Diese Beispiele für QueryExpression und SQL zeigen die Muster, die mit JoinOperator.In angewendet werden.

QueryExpression query = new("contact");
query.ColumnSet.AddColumn("fullname");

LinkEntity linkedAccount = query.AddLink(
      linkToEntityName: "account",
      linkFromAttributeName: "contactid",
      linkToAttributeName: "primarycontactid",
      joinOperator: JoinOperator.In);

linkedAccount.EntityAlias = "account";

linkedAccount.LinkCriteria.AddCondition(
      entityName: "account",
      attributeName: "statecode",
      conditionOperator: ConditionOperator.Equal,
      values: 1);

Verwende JoinOperator.MatchFirstRowUsingCrossApply

JoinOperator.MatchFirstRowUsingCrossApply erzeugt einen CROSS APPLY-Operator mit einer Unterabfrage mithilfe von top 1 nach diesem Muster:

QueryExpression query = new("contact");
query.ColumnSet.AddColumn("fullname");

LinkEntity linkedAccount = query.AddLink(
      linkToEntityName: "account",
      linkFromAttributeName: "contactid",
      linkToAttributeName: "primarycontactid",
      joinOperator: JoinOperator.MatchFirstRowUsingCrossApply);

linkedAccount.EntityAlias = "account";
linkedAccount.Columns = new ColumnSet("accountid", "name");

Dies entspricht JoinOperator.LeftOuter , mit der Ausnahme, dass die übergeordnete Zeile höchstens einmal zurückgegeben wird. Im Gegensatz zu JoinOperator.In und JoinOperator.Exists gibt sie Spaltenwerte aus einer der übereinstimmenden Zeilen in der verknüpften Tabelle zurück, wenn übereinstimmende Zeilen vorhanden sind, aber die übergeordnete Zeile wird auch dann zurückgegeben, wenn in der verknüpften Tabelle keine übereinstimmenden Zeilen vorhanden sind. Verwenden Sie dies, wenn nur ein einzelnes Beispiel einer übereinstimmenden Zeile aus der verknüpften Tabelle ausreichend ist und mehrere Kopien der übergeordneten Zeile in den Ergebnissen nicht erforderlich sind.

Nächste Schritte

Erfahren Sie, wie Sie Zeilen anordnen.