Udostępnij za pośrednictwem


Przy użyciu tabeli dwukrotnie w jednej kwerendzie

Można użyć tych samych porach tabeli dwa (lub więcej) w jednej kwerendzie.Istnieje kilka sytuacji, w których można to zrobić.

  • Tworzenie autosprzężenia z relacją zwrotną można sprząc tabelę z samą sobą przy użyciu relacji zwrotnej — relacji, w którym odwołującego się kolumny klucza obcego oraz kolumny klucza podstawowego do określonych są w tej samej tabeli.Na przykład załóżmy, że tabela pracownik zawiera dodatkową kolumnę, employee.manager_emp_id i że istnieje klucz obcy z między polami manager_emp_id (id_pracownika).W każdym wierszu tabeli employee w kolumnie manager_emp_id określa przełożonego danego pracownika.Bardziej precyzyjnie wskazuje pracownika przełożonemu pracownika.

    Sprzęgając tabelę z samą sobą przy użyciu relacji zwrotnej, można ustanowić zestaw wyników, w którym każdy wiersz zawiera nazwisko przełożonego i nazwę jednego z jego pracowników.Wynikowa instrukcja SQL może mieć następującą postać:

    SELECT 
        boss.lname, 
        boss.fname, 
        employee.lname, 
        employee.fname
    FROM 
        employee
            INNER JOIN 
            employee boss 
            ON employee.manager_emp_id 
            =  boss.emp_id
    

    Aby uzyskać więcej informacji na temat tworzenia sprzężeń przy użyciu relacji zwrotnej, zobacz Jak: tworzenie samosprzężeniach automatycznie.

  • Tworzenie autosprzężenia bez relacji zwrotnej do siebie można sprząc tabelę bez przy użyciu relacji zwrotnej.Na przykład można ustanowić zestaw wyników, w którym każdy wiersz opisuje pracownika i opisywał dla określonego pracownika.(Opiekun to pracownik o wyższym poziomie zadania). Wynikowa instrukcja SQL może mieć następującą postać:

    SELECT 
        employee.fname, 
        employee.lname, 
        mentor.fname, 
        mentor.lname 
    FROM 
        employee 
            INNER JOIN 
            employee mentor 
            ON employee.job_lvl 
            <  mentor.job_lvl
    

    Należy zauważyć, że w sprzężeniu użyto warunku innego niż równość.Aby uzyskać więcej informacji na temat sprzęgania tabel za pomocą warunków innych niż równość zobacz Operatory porównania Join.

    Aby uzyskać więcej informacji o tworzeniu samosprzężeniach przy użyciu kolumn niepowiązanych, Jak: tworzenie ręcznie samosprzężeniach.

  • Przy użyciu tabeli dwa razy bez autosprzężenia nawet bez autosprzężenia, można użyć dwa razy tej samej tabeli (lub więcej) w kwerendzie.Na przykład można ustanowić zestaw wyników zawierający pozostałe książki autora lub autorów ulubionej książki.W takim przypadku Użyj tabeli AutorzyTytułów dwukrotnie — raz, aby znaleźć autorów ulubionej książki (jest gniew wroga?) i raz, aby znaleźć pozostałe książki tych autorów.Wynikowa instrukcja SQL może mieć następującą postać:

    SELECT 
        other_title.title
    FROM 
        titles favorite_title 
            INNER JOIN 
            titleauthor favorite_titleauthor 
            ON favorite_title.title_id 
            =  favorite_titleauthor.title_id 
                INNER JOIN 
                authors 
                ON favorite_titleauthor.au_id 
                =  authors.au_id 
                    INNER JOIN 
                    titleauthor other_titleauthor 
                    ON authors.au_id 
                    =  other_titleauthor.au_id 
                        INNER JOIN 
                        titles other_title 
                        ON other_titleauthor.title_id 
                        =  other_title.title_id 
    WHERE 
        favorite_title.title 
        = 'Is Anger the Enemy?' 
      AND 
        favorite_title.title 
        <> other_title.title 
    

    [!UWAGA]

    Aby rozróżnić wielokrotnego użycia jakichkolwiek jednej tabeli, powyższa kwerenda użyto następujących aliasów: UlubionaTytuł, celu (other_titleauthor) i InneTytuł (other_title).Aby uzyskać więcej informacji na temat aliasów, zobacz Jak: Tworzenie aliasów tabel.

Zobacz też

Koncepcje

Praca z danymi w okienku wyników

Inne zasoby

Określanie kryteriów wyszukiwania