Jak Utwórz ręcznie samosprzężeniach (wizualne Narzędzia bazy danych)
Możesz łączyć tabeli do siebie, nawet jeśli tabela nie ma relacja zwrotna w bazie danych.Na przykład można użyć samosprzężenie do znalezienia par autorów mieszkających w tym samym mieocie.
Jak każde łączyć, samosprzężenie wymaga przynajmniej dwóch tabel.Różnica jest, zamiast drugiej tabela do kwerendy dodawania drugie wystąpienie tej samej tabela.W ten sposób można porównać kolumna w pierwszym wystąpienie z tabela do tej samej kolumna w drugim wystąpienie, która umożliwia porównanie wartości kolumna do siebie.Kwerendy i projektanta widoku przypisuje alias drugiej wystąpienie tabela.
Na przykład, jeśli tworzysz samosprzężenie do znalezienia wszystkich par autorów mieszkających w Berkeley, porównaj city kolumny w pierwszej instancji tabela 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 samosprzężenie często wymaga wielu warunków łączyć.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'
Ulepszony zestaw 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 łączyć 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
Aby utworzyć samosprzężenie ręcznie
Dodaj do w okienku Diagram tabela lub obiekt oródwierszową chcesz pracować.
Dodaj tę samą tabela ponownie, tak, aby w okienku Diagram pokazuje tej samej tabela lub obiektu wartościami przechowywanymi w tabela dwukrotnie w okienku Diagram.
Kwerendy i widoku Projektant przypisuje alias drugiej wystąpienie przez dodanie kolejnego numeru do nazwy tabela.Ponadto kwerendy i widoku Projektant tworzy linię łączyć między dwoma wystąpieniami tabela lub oródwierszową obiektu w okienku Diagram.
Kliknij prawym przyciskiem myszy linię łączyć, a następnie wybierz polecenie Właściwości z menu skrótów.
W oknie właściwość kliknij warunek sprzężenia i typ i kliknij przycisk wielokropka (…) z prawej strony właściwość.
W Okno dialogowe Join Zmień operator porównania między kluczami podstawowymi.Na przykład można zmienić operator mniejsze niż (<).
Tworzenie dodatkowych warunek łączyć (na przykład autorzy.kod = autorzy1.kod) przeciągając nazwę kolumna sprzężenia podstawowej łączyć w pierwszej tabela lub obiektu wartościami przechowywanymi w tabela i upuszczając go na odpowiednią kolumna sprzężenia w drugiej.
Określ inne opcje kwerendy, takie jak kolumny wyjociowe, warunki wyszukiwania i kolejność sortowania sortowania.
Zobacz także