Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server-
Sie können eine Tabelle mit sich selbst verbinden, auch wenn die Tabelle keine reflexive Beziehung in der Datenbank hat. Sie können z. B. einen Selbstbeitritt verwenden, um Autorenpaare zu finden, die in derselben Stadt leben.
Wie bei jeder Verknüpfung wird für eine Selbstverknüpfung mindestens eine Tabelle benötigt, aber sie funktioniert, als wären es zwei. Der Unterschied besteht darin, dass Sie, anstatt der Abfrage eine zweite Tabelle hinzuzufügen, eine zweite Instanz derselben Tabelle hinzufügen. Auf diese Weise können Sie eine Spalte in der ersten Instanz der Tabelle mit derselben Spalte in der zweiten Instanz vergleichen, mit der Sie die Werte in einer Spalte miteinander vergleichen können. Der Abfrage- und Ansichts-Designer der zweiten Instanz der Tabelle einen Alias zuweist.
Wenn Sie z. B. eine Selbstverknüpfung erstellen, um alle Autorenpaare innerhalb Berkeley zu finden, vergleichen Sie die Spalte city
in der ersten Instanz der Tabelle mit der Spalte city
in der zweiten Instanz. Die resultierende Abfrage sieht möglicherweise wie folgt aus:
SELECT
authors.au_fname,
authors.au_lname,
authors1.au_fname AS Expr2,
authors1.au_lname AS Expr3
FROM
authors
INNER JOIN
authors authors1
ON authors.city
= authors1.city
WHERE
authors.city = 'Berkeley'
Das Erstellen einer Selbstverknüpfung erfordert häufig mehrere Verknüpfungsbedingungen. Berücksichtigen Sie das Ergebnis der vorherigen Abfrage, um zu verstehen, warum:
Cheryl Carson Cheryl Carson
Abraham Bennet Abraham Bennet
Cheryl Carson Abraham Bennet
Abraham Bennet Cheryl Carson
Die erste Zeile ist nutzlos; es weist darauf hin, dass Cheryl Carson in derselben Stadt wie Cheryl Carson lebt. Die zweite Zeile ist ebenso nutzlos. Um diese nutzlosen Daten zu beseitigen, fügen Sie eine weitere Bedingung hinzu, in der nur die Ergebniszeilen beibehalten werden, in denen die beiden Autorennamen unterschiedliche Autoren beschreiben. Die resultierende Abfrage sieht möglicherweise wie folgt aus:
SELECT
authors.au_fname,
authors.au_lname,
authors1.au_fname AS Expr2,
authors1.au_lname AS Expr3
FROM
authors
INNER JOIN
authors authors1
ON authors.city
= authors1.city
AND authors.au_id
<> authors1.au_id
WHERE
authors.city = 'Berkeley'
Das Resultset wird verbessert:
Cheryl Carson Abraham Bennet
Abraham Bennet Cheryl Carson
Die beiden Ergebniszeilen sind jedoch redundant. Die erste sagt Carson lebt in derselben Stadt wie Bennet, und die zweite sagt, dass bennet in derselben Stadt wie Carson lebt. Um diese Redundanz zu vermeiden, können Sie die zweite Verknüpfungsbedingung von "nicht gleich" in "kleiner als" ändern. Die resultierende Abfrage sieht möglicherweise wie folgt aus:
SELECT
authors.au_fname,
authors.au_lname,
authors1.au_fname AS Expr2,
authors1.au_lname AS Expr3
FROM
authors
INNER JOIN
authors authors1
ON authors.city
= authors1.city
AND authors.au_id
< authors1.au_id
WHERE
authors.city = 'Berkeley'
Und das Resultset sieht wie folgt aus:
Cheryl Carson Abraham Bennet
So erstellen Sie eine Selbstverbindung manuell
Fügen Sie dem Diagrammbereich das Tabellen- oder Tabellenwertobjekt hinzu, mit dem Sie arbeiten möchten.
Fügen Sie die gleiche Tabelle erneut hinzu, sodass im Diagrammbereich dasselbe Tabellen- oder Tabellenwertobjekt zweimal im Diagrammbereich angezeigt wird.
Der Abfrage- und Ansichts-Designer weist der zweiten Instanz einen Alias zu, indem dem Tabellennamen eine sequenzielle Zahl hinzugefügt wird. Darüber hinaus erstellt der Abfrage- und Ansichts-Designer eine Verknüpfungslinie zwischen den beiden Vorkommen des Tabellen- oder Tabellenwertobjekts im Diagrammbereich.
Klicken Sie mit der rechten Maustaste auf die Verknüpfungslinie, und wählen Sie im Kontextmenü Eigenschaften aus.
Klicken Sie im Eigenschaftenfenster auf Verknüpfungsbedingung und geben Sie ein, und klicken Sie auf die Auslassungspunkte (...) rechts neben der Eigenschaft.
Ändern Sie im Dialogfeld „Verknüpfung“ den Vergleichsoperator zwischen den Primärschlüsseln nach Bedarf. Zum Beispiel könnten Sie den Operator auf "kleiner als" (<) ändern.
Erstellen Sie die zusätzliche Verknüpfungsbedingung (z. B. authors.zip = authors1.zip), indem Sie den Namen der primären Verknüpfungsspalte im ersten Vorkommen des Tabellen- oder Tabellenwertobjekts ziehen und in der entsprechenden Spalte im zweiten Vorkommen ablegen.
Geben Sie weitere Optionen für die Abfrage an, z. B. Ausgabespalten, Suchbedingungen und Sortierreihenfolge.
Siehe auch
Automatisches Erstellen von Self-Joins (Visuelle Datenbanktools)
Abfrage mit Verknüpfungen (Visual Database Tools)