How to: Create Self-Joins Manually (Visual Database Tools)
Możesz łączyć tabela do siebie, nawet jeśli tabela nie ma relacja zwrotna w bazie danych.Na przykład, można użyć samodzielnie-łączyć do znalezienia par autorów mieszkających w tym samym mieście.
Podobnie jak w przypadku wszelkich łączyć, samosprzężenie wymaga przynajmniej dwie tabele.Różnica polega na, zamiast drugiej tabela do kwerendy, można dodać drugiego wystąpienie tej samej tabela.W ten sposób można porównać kolumna w pierwszym wystąpienie tabela z tą samą kolumną w drugiej wystąpienie, który umożliwia porównanie wartości kolumna do siebie.The Query and View Designer assigns an alias to the second wystąpienie of the tabela.
Na przykład, jeśli tworzysz automatycznej-łączyć do znalezienia wszystkich par autorów w środowisku, można porównywać city kolumny w pierwszej instancji tabela przed 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ć to bezużyteczne dane, należy dodać inny warunek, zachowując tylko te wiersze wynikowe, w którym nazwy autora dwóch 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 są zbędne.Pierwszy mówi, że 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ć ten redundancję, można zmienić drugi warunek łączyć z "" nie jest równe"do"mniejszy niż". Wynikowa kwerenda może wyglądać w następujący sposób:
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'
A zestaw wyników wygląda następująco:
Cheryl Carson Abraham Bennet
Aby ręcznie utworzyć samosprzężenie
Dodawanie do Okienko Diagram w tabela lub obiektu wycenione tabela chcesz pracować.
Dodaj tę samą tabela ponownie, tak, aby w okienku Diagram pokazuje tej samej tabela lub obiektu wycenione tabela dwukrotnie w okienku diagramu.
Kwerendę i projektanta widoku przypisuje alias drugiej instancji dodając numer kolejny nazwy tabela.Ponadto kwerendę i projektanta widoku tworzy linię łączyć między dwoma wystąpieniami tabela lub wycenione tabela obiektu w okienku diagramu.
Prawym przyciskiem myszy kliknij linię łączyć, a następnie wybierz polecenie Właściwości z menu skrótów.
W oknie właściwość kliknij przycisk okna Warunek łączyć i wpisz a kliknijwielokropkiem (...) z prawej strony pola właściwość.
W łączyć, okno dialogowe Zmień operator porównania między kluczami podstawowymi.Na przykład można zmienić operator na wartość mniejszą niż)<).
Tworzenie warunek łączyć dodatkowe (na przykład authors.zip = authors1.zip) przeciągając nazwę kolumna dołączania podstawowy w pierwsze wystąpienie tabela lub obiektu wycenione tabela i upuszczając go na odpowiedniej kolumny w drugim wystąpieniu.
Podaj opcje kwerendy, takie jak kolumny wyjociowe, warunki wyszukiwania i kolejność sortowania.
See Also