Udostępnij przez


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

  1. Dodaj do w okienku Diagram tabela lub obiekt oródwierszową chcesz pracować.

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

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

  4. W oknie właściwość kliknij warunek sprzężenia i typ i kliknij przycisk wielokropka (…) z prawej strony właściwość.

  5. W Okno dialogowe Join Zmień operator porównania między kluczami podstawowymi.Na przykład można zmienić operator mniejsze niż (<).

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

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