Jak: tworzenie ręcznie samosprzężeniach
Można sprząc tabelę do siebie, nawet jeśli tabela nie ma relacji zwrotnej w bazie danych.Można na przykład użyć autosprzężenia do znalezienia par autorów mieszkających w tym samym mieście.
Podobnie jak w przypadku każde sprzężenie, autosprzężenie wymaga przynajmniej dwóch tabel.Różnica stanowi, że zamiast drugiej tabeli do kwerendy, można dodać drugie wystąpienie tej samej tabeli.W ten sposób można porównać kolumnę w pierwszej instancji tabeli z tą samą kolumną w drugiej instancji, co umożliwia porównanie wartości w kolumnie do siebie.Kwerendy i projektanta widoku przypisuje alias drugiej instancji tabeli.
Na przykład, jeśli są tworzenie autosprzężenia do znalezienia wszystkich par autorów mieszkających w Berkeley, można porównać city kolumny w pierwszej instancji tabeli przeciwko city kolumna w drugiej instancji.Wynikowa kwerenda może wyglądać następująco:
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'
Tworzenie autosprzężenia często wymaga wielu warunków sprzężenia.Aby zrozumieć, dlaczego, rozważmy wyniki poprzedniej kwerendy:
Cheryl Carson Cheryl Carson
Abraham Bennet Abraham Bennet
Cheryl Carson Abraham Bennet
Abraham Bennet Cheryl Carson
Pierwszy wiersz jest bezużyteczny; Wskazuje on, że Cheryl Carson mieszka w tym samym mieście co Cheryl Carson.Drugi wiersz jest równie bezużyteczny.Aby wyeliminować takie dane, należy dodać inny warunek zachowujący tylko te wiersze wynikowe, w których dwa nazwiska autorów opisują innych autorów.Wynikowa kwerenda może mieć następującą postać:
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'
Zwiększona zestawu wyników:
Cheryl Carson Abraham Bennet
Abraham Bennet Cheryl Carson
Jednak te dwa wiersze wynikowe stanowią powtórzenie.Pierwszy mówi Carson mieszka w tym samym mieście co Bennet, a drugi mówi, że Bennet mieszka w tym samym mieście co Carson.Aby wyeliminować dublowanie informacji, można zmienić drugi warunek sprzężenia z "nie równa się" do "mniejszy niż". Wynikowa kwerenda może mieć następującą postać:
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'
I zestaw wyników wygląda następująco:
Cheryl Carson Abraham Bennet
[!UWAGA]
Na danym komputerze mogą być używane inne nazwy lub lokalizacje pewnych elementów interfejsu użytkownika programu Visual Studio, które są używane w poniższych instrukcjach. Używana wersja programu Visual Studio oraz jej ustawienia określają te elementy. Aby uzyskać więcej informacji, zobacz Visual Studio, ustawienia.
Aby ręcznie utworzyć samosprzężenie
Dodaj do okienka Diagram, tabeli lub obiektu wartościami przechowywanymi w tabeli, którą chcesz pracować z.
Dodaj tę samą tabelę ponownie, tak, aby w okienku Diagram pokazuje tej samej tabeli lub obiektu wartościami przechowywanymi w tabeli dwukrotnie w okienku diagramu.
Kwerendy i widoku Projektant przypisuje alias drugiej instancji, przez dodanie kolejnego numeru do nazwy tabeli.Ponadto kwerendy i widoku Projektant tworzy linię sprzężenia między dwoma wystąpieniami tabeli lub obiektu wartościami przechowywanymi w tabeli w okienku diagramu.
Kliknij prawym przyciskiem myszy linię sprzężenia, a następnie wybierz polecenie Właściwości z menu skrótów.
W oknie dialogowym właściwości kliknij Dołącz warunek i wpisz tekst i kliknij przycisk wielokropka (…) z prawej strony pola właściwości.
W oknie dialogowym sprzężenia Zmień operator porównania między kluczami podstawowymi.Na przykład może zmienić operator mniej niż (<).
Utwórz dodatkowe warunki sprzężenia (na przykład autorzy.kod = autorzy1.kod) przeciągając nazwę kolumny sprzężenia podstawowego w pierwszej tabeli lub obiektu wartościami przechowywanymi w tabeli i upuszczając go na odpowiedniej kolumny w drugim wystąpieniu.
Określ inne opcje kwerendy, takie jak kolumny wyjociowe, warunki wyszukiwania i porządek sortowania.
Zobacz też
Zadania
Jak: tworzenie samosprzężeniach automatycznie