Tworzenie zapytania opartego na wielu tabelach

Czasami proces tworzenia i używania zapytań w programie Access polega jedynie na wybraniu pól z tabeli, opcjonalnym zastosowaniu kryteriów i wyświetleniu wyników. Jednak częściej zdarza się, że potrzebne dane są rozmieszczone w więcej niż jednej tabeli. Co wtedy? Na szczęście można utworzyć zapytanie łączące informacje z różnych źródeł. W tym temacie opisano kilka scenariuszy pobierania danych z wielu tabel i przedstawiono, jak to zrobić.

Co chcesz zrobić?

Uzupełnianie informacji w zapytaniu przy użyciu danych z powiązanej tabeli

Łączenie danych z dwóch tabel przy użyciu ich relacji z trzecią tabelą

Wyświetlanie wszystkich rekordów z dwóch podobnych tabel

Uzupełnianie informacji w zapytaniu przy użyciu danych z powiązanej tabeli

Czasami zapytanie oparte na jednej tabeli zapewnia potrzebne informacje, ale pobranie danych z innej tabeli może sprawić, że wyniki zapytania będą jeszcze bardziej zrozumiałe i przydatne. Załóżmy na przykład, że masz listę identyfikatorów pracowników wyświetlanych w wynikach zapytania. Stwierdzasz, że przydatniejsze byłoby wyświetlenie imion i nazwisk pracowników w wynikach, ale te imiona i nazwiska znajdują się w innej tabeli. Aby imiona i nazwiska pracowników były wyświetlane w wynikach zapytania, należy uwzględnić obie tabele w zapytaniu.

Tworzenie zapytania z podstawowej tabeli i powiązanej tabeli za pomocą Kreatora zapytań

  1. Upewnij się, że dla tabel jest zdefiniowana relacja (okno Relacje).

    Jak to zrobić?

    1. Na karcie Narzędzia bazy danych w grupie Pokazywanie/ukrywanie kliknij pozycję Relacje.

    2. Na karcie Projektowanie w grupie Relacje kliknij pozycję Wszystkie relacje.

    3. Zidentyfikuj tabele, które powinny mieć zdefiniowaną relację.

      • Jeśli te tabele są widoczne w oknie Relacje, sprawdź, czy relacja została już zdefiniowana.

        Relacja jest wyświetlana jako linia łącząca dwie tabele przy użyciu wspólnego pola. Możesz kliknąć dwukrotnie linię relacji, aby zobaczyć, które pola tabel są połączone relacją.

      • Jeśli tabele nie są widoczne w oknie Relacje, należy je dodać.

        Na karcie Projektowanie w grupie Pokazywanie/ukrywanie kliknij pozycję Nazwy tabel.

        Kliknij dwukrotnie każdą z tabel, które chcesz wyświetlić, a następnie kliknij pozycję Zamknij.

    4. Jeśli nie znajdziesz relacji między tabelami, utwórz ją, przeciągając pole z jednej tabeli do pola w drugiej tabeli. Pola, których używasz do tworzenia relacji między tabelami, muszą mieć identyczne typy danych.

      Uwaga : Możesz utworzyć relację między polem, które ma typ danych Autonumerowanie, i polem, które ma typ danych Liczba, jeśli to pole ma rozmiar długiej liczby całkowitej. Zdarza się to często, gdy jest tworzona relacja jeden-do-wielu.

      Zostanie wyświetlone okno dialogowe Edytowanie relacji.

    5. Kliknij pozycję Utwórz, aby utworzyć relację.

      Aby uzyskać więcej informacji o opcjach dostępnych podczas tworzenia relacji, zobacz artykuł Tworzenie, edytowanie lub usuwanie relacji.

    6. Zamknij okno Relacje.

  2. Na karcie Tworzenie w grupie Zapytania kliknij pozycję Kreator zapytań. Uwaga: jeśli korzystasz z programu Access 2007, na karcie Tworzenie w grupie Inne kliknij pozycję Kreator kwerend.

  3. W oknie dialogowym Nowe zapytanie kliknij pozycję Kreator prostych zapytań, a następnie kliknij pozycję OK.

  4. W polu kombi Tabele/kwerendy kliknij tabelę zawierającą podstawowe informacje, które chcesz uwzględnić w zapytaniu.

  5. Na liście Dostępne pola kliknij pierwsze pole, które chcesz uwzględnić w zapytaniu, a następnie kliknij przycisk z pojedynczą strzałką w prawo, aby przenieść to pole na listę Wybrane pola. Zrób to samo dla każdego dodatkowego pola z tej tabeli, które chcesz uwzględnić w zapytaniu. Mogą to być pola, które mają być zwracane w wynikach zapytania, albo pola, za pomocą których chcesz ograniczyć wiersze w wynikach, stosując kryteria.

  6. W polu kombi Tabele/kwerendy kliknij tabelę zawierającą powiązane dane, przy użyciu których chcesz uzupełnić wyniki zapytania.

  7. Dodaj pola, przy użyciu których chcesz uzupełnić wyniki zapytania, do listy Wybrane pola, a następnie kliknij pozycję Dalej.

  8. W obszarze Czy kwerenda ma być szczegółowa czy podsumowująca? kliknij pozycję Szczegółowa lub Podsumowująca.

    Jeśli nie chcesz używać w zapytaniu funkcji agregujących (Suma, Średnia, Minimum, Maksimum, Policz, Odchylenie standardowe lub Wariancja), wybierz zapytanie szczegółowe. Jeśli zapytanie ma używać funkcji agregującej, wybierz zapytanie podsumowujące. Po dokonaniu wyboru kliknij pozycję Dalej.

  9. Kliknij pozycję Zakończ, aby wyświetlić wyniki.

Przykład z użyciem przykładowej bazy danych Northwind

W poniższym przykładzie jest używany Kreator zapytań do utworzenia zapytania wyświetlającego listę zamówień, opłatę wysyłkową dla każdego zamówienia oraz imię i nazwisko pracownika, który obsłużył dane zamówienie.

Uwaga : Ten przykład obejmuje modyfikowanie przykładowej bazy danych Northwind. Warto utworzyć kopię zapasową przykładowej bazy danych Northwind, a następnie wykonać czynności podane w tym przykładzie, korzystając z tej kopii zapasowej.

Tworzenie zapytania za pomocą Kreatora zapytań

  1. Otwórz przykładową bazę danych Northwind. Zamknij formularz logowania.

  2. Na karcie Tworzenie w grupie Zapytania kliknij pozycję Kreator zapytań. Uwaga: jeśli korzystasz z programu Access 2007, na karcie Tworzenie w grupie Inne kliknij pozycję Kreator kwerend.

  3. W oknie dialogowym Nowe zapytanie kliknij pozycję Kreator prostych zapytań, a następnie kliknij pozycję OK.

  4. W polu kombi Tabele/kwerendy kliknij pozycję Tabela: Zamówienia.

  5. Na liście Dostępne pola kliknij dwukrotnie pozycję IDZamówienia, aby przenieść to pole na listę Wybrane pola. Kliknij dwukrotnie pozycję Opłata wysyłkowa, aby przenieść to pole na listę Wybrane pola.

  6. W polu kombi Tabele/kwerendy kliknij pozycję Tabela: Pracownicy.

  7. Na liście Dostępne pola kliknij dwukrotnie pozycję Imię, aby przenieść to pole na listę Wybrane pola. Kliknij dwukrotnie pozycję Nazwisko, aby przenieść to pole na listę Wybrane pola. Kliknij pozycję Dalej.

  8. Ponieważ tworzysz listę wszystkich zamówień, użyj zapytania szczegółowego. W przypadku sumowania opłat wysyłkowych według pracownika lub używania innych funkcji agregujących należy użyć zapytania podsumowującego. Kliknij pozycję Szczegółowa (pokazuje wszystkie pola każdego rekordu), a następnie kliknij pozycję Dalej.

  9. Kliknij pozycję Zakończ, aby wyświetlić wyniki.

Zapytanie zwróci listę zamówień i dla każdego z nich opłatę wysyłkową oraz imię i nazwisko pracownika, który je obsłużył.

Początek strony

Łączenie danych z dwóch tabel przy użyciu ich relacji z trzecią tabelą

Często dane w dwóch tabelach są powiązane za pośrednictwem innej tabeli. Zazwyczaj jest tak dlatego, że dane w dwóch pierwszych tabelach łączy relacja wiele-do-wielu. Dobrym rozwiązaniem przy projektowaniu baz danych jest często podzielenie relacji wiele-do-wielu między dwiema tabelami na dwie relacje jeden-do-wielu dotyczące trzech tabel. Można to zrobić przez utworzenie trzeciej tabeli (nazywanej tabelą skrzyżowań lub tabelą relacji), która będzie zawierać klucz podstawowy i klucz obcy dla dwóch innych tabel. Następnie tworzy się relację jeden-do-wielu między każdym kluczem obcym w tabeli skrzyżowań i odpowiednim kluczem podstawowym w jednej z pozostałych tabel. W takich przypadkach należy uwzględnić wszystkie trzy tabele w zapytaniu, nawet jeśli chcesz pobrać dane tylko z dwóch.

Tworzenie zapytania wybierającego przy użyciu tabel z relacją wiele-do-wielu

  1. Na karcie Tworzenie w grupie Zapytania kliknij pozycję Projekt zapytania. Uwaga: jeśli korzystasz z programu Access 2007, na karcie Tworzenie w grupie Inne kliknij pozycję Projekt zapytania.

    Zostanie wyświetlone okno dialogowe Pokazywanie tabeli.

  2. W oknie dialogowym Pokazywanie tabeli kliknij dwukrotnie dwie tabele zawierające dane, które chcesz uwzględnić w zapytaniu, oraz tabelę skrzyżowań, która je łączy, a następnie kliknij pozycję Zamknij.

    Wszystkie trzy tabele zostaną wyświetlone w obszarze roboczym projektu zapytania, połączone odpowiednimi polami.

  3. Kliknij dwukrotnie każde z pól, którego chcesz użyć w zapytaniu. Każde pole zostanie wyświetlone w obszarze określanym jako siatka projektu zapytania.

  4. W siatce projektu zapytania w wierszu Kryteria wprowadź kryteria pól. Aby użyć kryterium pola bez wyświetlania tego pola w wynikach zapytania, wyczyść pole wyboru w wierszu Pokaż dla tego pola.

  5. Aby posortować wyniki na podstawie wartości w polu, w siatce projektu zapytania kliknij pozycję Rosnąco lub Malejąco (zależnie od sposobu sortowania rekordów) w wierszu Sortuj dla tego pola.

  6. Na karcie Projektowanie w grupie Wyniki kliknij pozycję Uruchom.

    W programie Access zostaną wyświetlone wyniki zapytania (widok arkusza danych).

Przykład z użyciem przykładowej bazy danych Northwind

Uwaga : Ten przykład obejmuje modyfikowanie przykładowej bazy danych Northwind. Warto utworzyć kopię zapasową przykładowej bazy danych Northwind, a następnie wykonać czynności podane w tym przykładzie, korzystając z tej kopii zapasowej.

Załóżmy, że masz nową szansę sprzedaży: dostawca w Rio de Janeiro znalazł Twoją witrynę internetową i chciałby współpracować z Twoją firmą. Jednak działa on tylko w Rio de Janeiro i pobliskim São Paulo. Dostarcza on wszystkie kategorie produktów spożywczych, którymi handlujesz. Jest to dość duża firma, która chce mieć gwarancję, że zapewnisz jej wystarczającą potencjalną sprzedaż, aby było to opłacalne: co najmniej 20 000 BRL rocznie (około 22 000 PLN). Czy możesz jej zapewnić wymagany zbyt?

Dane potrzebne do odpowiedzi na to pytanie znajdują się w dwóch miejscach: w tabeli Klienci i tabeli Szczegóły zamówienia. Te tabele są powiązane za pośrednictwem tabeli Zamówienia. Relacje między tymi tabelami są już zdefiniowane. W tabeli Zamówienia każde zamówienie może mieć tylko jednego klienta, powiązanego z tabelą Klienci za pomocą pola IDKlienta. Każdy rekord w tabeli Szczegóły zamówienia jest powiązany tylko z jednym zamówieniem w tabeli Zamówienia za pomocą pola IDZamówienia. Dlatego dany klient może mieć wiele zamówień, z których każde ma wiele szczegółów zamówień.

W tym przykładzie zostanie utworzone zapytanie krzyżowe wyświetlające łączną sprzedaż według roku w miastach Rio de Janeiro i São Paulo.

Tworzenie zapytania w widoku projektu

  1. Otwórz bazę danych Northwind. Zamknij formularz logowania.

  2. Na karcie Tworzenie w grupie Zapytania kliknij pozycję Projekt zapytania. Uwaga: jeśli korzystasz z programu Access 2007, na karcie Tworzenie w grupie Inne kliknij pozycję Projekt zapytania.

    Zostanie wyświetlone okno dialogowe Pokazywanie tabeli.

  3. W oknie dialogowym Pokazywanie tabeli kliknij dwukrotnie pozycje Klienci, Zamówienia i Szczegóły zamówienia, a następnie kliknij pozycję Zamknij.

    Wszystkie trzy tabele zostaną wyświetlone w obszarze roboczym projektu zapytania.

  4. W tabeli Klienci kliknij dwukrotnie pole Miasto, aby dodać je do siatki projektu zapytania.

  5. W siatce projektu zapytania w kolumnie Miasto w wierszu Kryteria wpisz In ("Rio de Janeiro","São Paulo"). Spowoduje to, że tylko rekordy klientów z dowolnego z tych dwóch miast zostaną uwzględnione w zapytaniu.

  6. W tabeli Szczegóły zamówienia kliknij dwukrotnie pola DataWysyłki i CenaJednostkowa.

    Pola zostaną dodane do siatki projektu zapytania.

  7. W kolumnie DataWysyłki w siatce projektu zapytania wybierz wiersz Pole. Zamień wartość [DataWysyłki] na wartość Rok: Format([DataWysyłki],"yyyy"). Spowoduje to utworzenie aliasu pola (Rok), który umożliwi użycie tylko części wartości w polu DataWysyłki.

  8. W kolumnie CenaJednostkowa w siatce projektu zapytania wybierz wiersz Pole. Zamień wartość [CenaJednostkowa] na wartość Sprzedaż: [Szczegóły zamówienia].[CenaJednostkowa]*[Ilość]-[Szczegóły zamówienia].[CenaJednostkowa]*[Ilość]*[Rabat]. Spowoduje to utworzenie aliasu pola (Sprzedaż), który umożliwia obliczanie sprzedaży dla każdego rekordu.

  9. Na karcie Projektowanie w grupie Typ kwerendy kliknij pozycję Krzyżowa.

    Dwa nowe wiersze (Suma i Krzyżowa) zostaną wyświetlone w siatce projektu zapytania.

  10. W kolumnie Miasto w siatce projektu zapytania kliknij wiersz Krzyżowa, a następnie kliknij pozycję Nagłówek wiersza.

    Dzięki temu wartości dotyczące miast będą wyświetlane jako nagłówki wierszy (tj. zapytanie zwróci jeden wiersz dla każdego miasta).

  11. W kolumnie Rok kliknij wiersz Krzyżowa, a następnie kliknij pozycję Nagłówek kolumny.

    Dzięki temu wartości dotyczące lat będą wyświetlane jako nagłówki kolumn (tj. zapytanie zwróci jedną kolumnę dla każdego roku).

  12. W kolumnie Sprzedaż kliknij wiersz Krzyżowa, a następnie kliknij pozycję Wartość.

    Dzięki temu wartości sprzedaży będą wyświetlane na przecięciu wierszy i kolumn (tj. zapytanie zwróci jedną wartość sprzedaży dla każdej kombinacji miasta i roku).

  13. W kolumnie Sprzedaż kliknij wiersz Sumy, a następnie kliknij pozycję Suma.

    Dzięki temu zapytanie zsumuje wartości w tej kolumnie.

    W wierszu Sumy dla pozostałych dwóch kolumn możesz pozostawić wartość domyślną Grupuj według, ponieważ w tych kolumnach powinny być wyświetlane poszczególne wartości, a nie wartości zagregowane.

  14. Na karcie Projektowanie w grupie Wyniki kliknij pozycję Uruchom.

Utworzone zapytanie zwraca łączną sprzedaż według roku w miastach Rio de Janeiro i São Paulo.

Początek strony

Wyświetlanie wszystkich rekordów z dwóch podobnych tabel

Czasami należy połączyć dane z dwóch tabel, które mają identyczną strukturę, ale jedna z nich znajduje się w innej bazie danych. Rozważmy następujący scenariusz.

Załóżmy, że jesteś analitykiem pracującym nad danymi uczniów. Zamierzasz udostępniać dane między swoją szkołą i inną szkołą, tak aby obie mogły ulepszyć swoje programy. W przypadku niektórych pytań, na które szukasz odpowiedzi, lepiej byłoby równocześnie przejrzeć wszystkie rekordy z obu szkół, a nie rekordy każdej szkoły osobno.

Możesz zaimportować dane drugiej szkoły do nowych tabel w Twojej bazie danych, ale wówczas wszelkie zmiany danych drugiej szkoły nie będą uwzględniane w tej bazie danych. Lepszym rozwiązaniem jest połączenie tabel drugiej szkoły, a następnie utworzenie zapytań łączących dane po uruchomieniu. Będzie można analizować dane jako jeden zestaw, zamiast przeprowadzać dwie analizy i próbować interpretować je tak, jakby były jedną.

Do wyświetlania wszystkich rekordów z dwóch tabel o identycznej strukturze służy zapytanie składające.

Zapytań składających nie można wyświetlać w widoku projektu. Tworzy się je przy użyciu poleceń SQL wprowadzanych na karcie obiektu widok SQL.

Tworzenie zapytania składającego przy użyciu dwóch tabel

  1. Na karcie Tworzenie w grupie Zapytania kliknij pozycję Projekt zapytania. Uwaga: jeśli korzystasz z programu Access 2007, na karcie Tworzenie w grupie Inne kliknij pozycję Projekt zapytania.

    Zostanie otwarta siatka projektu zapytania i okno dialogowe Pokazywanie tabeli.

  2. W oknie dialogowym Pokazywanie tabeli kliknij pozycję Zamknij.

  3. Na karcie Projektowanie w grupie Typ kwerendy kliknij pozycję Składająca.

    Zapytanie zostanie przełączone z widoku projektu do widoku SQL. W tym momencie karta obiektu Widok SQL jest pusta.

  4. W widoku SQL wpisz ciąg SELECT i listę pól z pierwszej tabeli, której chcesz użyć w zapytaniu. Nazwy pól należy ująć w nawiasy kwadratowe i rozdzielić przecinkami. Po zakończeniu wpisywania nazw pól naciśnij klawisz ENTER. Kursor zostanie przeniesiony w dół o jeden wiersz w widoku SQL.

  5. Wpisz ciąg FROM i nazwę pierwszej tabeli, której chcesz użyć w zapytaniu. Naciśnij klawisz ENTER.

  6. Jeśli chcesz określić kryteria dla pola z pierwszej tabeli, wpisz ciąg WHERE, a następnie nazwę pola, operator porównania (zazwyczaj znak równości (=)) i kryterium. Możesz dodać inne kryteria na końcu klauzuli WHERE, używając słowa kluczowego AND i takiej samej składni jak dla pierwszego kryterium, na przykład WHERE [PoziomZajęć]="100" AND [PunktowaneGodzinyZajęć]>2. Po zakończeniu określania kryteriów naciśnij klawisz ENTER.

  7. Wpisz ciąg UNION i naciśnij klawisz ENTER.

  8. Wpisz ciąg SELECT i listę pól z drugiej tabeli, której chcesz użyć w zapytaniu. Należy uwzględnić te same pola z tej tabeli, które zostały uwzględnione z pierwszej tabeli, w tej samej kolejności. Nazwy pól należy ująć w nawiasy kwadratowe i rozdzielić przecinkami. Po zakończeniu wpisywania nazw pól naciśnij klawisz ENTER.

  9. Wpisz ciąg FROM i nazwę drugiej tabeli, którą chcesz uwzględnić w zapytaniu. Naciśnij klawisz ENTER.

  10. W razie potrzeby możesz dodać klauzulę WHERE zgodnie z opisem w kroku 6 tej procedury.

  11. Wpisz średnik (;) wskazujący koniec zapytania.

  12. Na karcie Projektowanie w grupie Wyniki kliknij pozycję Uruchom.

    Wyniki zostaną wyświetlone w widoku arkusza danych.

Początek strony

Zobacz też

Sprzęganie tabel i zapytań

Rozwijaj swoje umiejętności
Poznaj szkolenia
Uzyskuj nowe funkcje w pierwszej kolejności
Dołącz do niejawnych testerów pakietu Office

Czy te informacje były pomocne?

Dziękujemy za opinię!

Dziękujemy za opinię! Wygląda na to, że połączenie Cię z jednym z naszych agentów pomocy technicznej pakietu Office może być pomocne.

×