Udostępnij przez


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

  1. Dodawanie do Okienko Diagram w tabela lub obiektu wycenione tabela chcesz pracować.

  2. 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.

  3. Prawym przyciskiem myszy kliknij linię łączyć, a następnie wybierz polecenie Właściwości z menu skrótów.

  4. W oknie właściwość kliknij przycisk okna Warunek łączyć i wpisz a kliknijwielokropkiem (...) z prawej strony pola właściwość.

  5. W łączyć, okno dialogowe Zmień operator porównania między kluczami podstawowymi.Na przykład można zmienić operator na wartość mniejszą niż)<).

  6. 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.

  7. Podaj opcje kwerendy, takie jak kolumny wyjociowe, warunki wyszukiwania i kolejność sortowania.