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. Die Abfrage- und Ansicht-Designertools (Visual Database Tools) weisen der zweiten Instanz der Tabelle einen Alias zu.
Wenn Sie beispielsweise eine Selbstverknnung erstellen, um alle Autorenpaare in Berkeley zu finden, vergleichen Sie die city Spalte in der ersten Instanz der Tabelle mit der city Spalte 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 AS 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 AS 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 AS 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
Manuelles Erstellen eines Selbstbeitritts
Fügen Sie dem Diagrammbereich (Visual Database Tools) 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.
Wählen Sie im Eigenschaftenfenster Verknüpfungsbedingung und Typ aus , und wählen Sie die Auslassungspunkte (...) rechts neben der Eigenschaft aus.
Ä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.