Applies ToAccess dla Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Dołączenie wielu źródeł danych do zapytania programu Access umożliwia ograniczanie rekordów, które mają być wyświetlane, w zależności od tego, jak źródła danych są ze sobą powiązane. Sprzężenia służą również do łączenia rekordów z obu źródeł danych, dzięki czemu każda para rekordów ze źródeł stanie się jednym rekordem w wynikach zapytania.

W tym artykule omówiono różne typy sprzężeń i pokazano, jak używać ich w zapytaniu. Domyślnie sprzężenie jest tworzone automatycznie, jeśli istnieje już relacja między dwoma źródłami danych używanymi w zapytaniu. Sprzężenie jest również tworzone, jeśli istnieją pola, które wyraźnie odpowiadają sobie nawzajem. Możesz usunąć automatycznie utworzone sprzężenie. Ten artykuł zawiera podstawowe informacje na temat relacji pomiędzy tabelami, w tym sposoby ich tworzenia.

Uwaga: Możesz dołączać do zapytań w taki sam sposób, jak dołączasz do tabel, a także łączyć obie te tabele.

W tym artykule

Przegląd

Baza danych to zbiór tabel danych z logicznymi relacjami między sobą. Relacje służą do łączenia tabel za pomocą pól, które są wspólne. Tabela może być częścią dowolnej liczby relacji, ale każda relacja zawsze zawiera dokładnie dwie tabele. W zapytaniu relacja jest reprezentowana przez sprzężenie.

Podczas dodawania tabel do zapytania Access tworzy sprzężenia oparte na relacjach zdefiniowanych między tabelami. Sprzężenia w zapytaniach można tworzyć ręcznie, nawet jeśli nie reprezentują one już zdefiniowanych relacji. Jeśli jako źródła danych zapytania używasz innych zapytań (zamiast tabel lub oprócz nich), możesz tworzyć sprzężenia między zapytaniami źródłowymi, a także między tymi zapytaniami a wszelkimi tabelami używanymi jako źródła danych.

Sprzężenia działają podobnie do kryteriów zapytań, ponieważ ustanawiają reguły, które muszą być zgodne z danymi, aby zostały uwzględnione w operacjach zapytania. Inaczej niż w przypadku kryteriów sprzężenia określają również, że każda para wierszy spełniających warunki sprzężenia będzie łączona w zestawie rekordów w celu utworzenia jednego wiersza.

Istnieją cztery podstawowe typy sprzężeń: sprzężenia wewnętrzne, sprzężenia zewnętrzne, sprzężenia krzyżowe i sprzężenia nierówne. W tym artykule omówiono każdy typ sprzężenia, z którego możesz korzystać, dlaczego używasz każdego typu oraz jak tworzyć sprzężenia.

Sprzężenia służą do zapytań, czym są relacje z tabelami: wskazanie sposobu łączenia danych w dwóch źródłach na podstawie wspólnych wartości danych. Oto ilustracja sprzężenia w widoku projektu zapytania z właściwościami sprzężenia otwartymi w oknie dialogowym:

Okno Właściwości sprzężenia

Ta linia między tabelami reprezentuje sprzężenie. Kliknij dwukrotnie sprzężenie, aby otworzyć okno dialogowe Właściwości sprzężenia (przedstawione) i przejrzeć lub zmienić sprzężenie.

Sprzężenia są czasami kierunkowe. W tym obszarze okna dialogowego przedstawiono tabelę, która znajduje się w sprzężeniu i które pola są używane do łączenia tabel.

Ten obszar określa typ sprzężenia: opcja 1 to sprzężenie wewnętrzne, 2 to lewe sprzężenie zewnętrzne, a 3 to prawe sprzężenie zewnętrzne.

Można używać pól z obu tabel, a z każdej z nich są wyświetlane dane odnoszące się do danego zadania. W sprzężeniu wewnętrznym nie są uwzględniane żadne inne dane. W przypadku sprzężenia zewnętrznego rekordy niepowiązane z jednej tabeli są również uwzględniane w wynikach zapytania.

Początek strony

Typy sprzężeń

Istnieją cztery podstawowe typy sprzężeń: sprzężenia wewnętrzne, sprzężenia zewnętrzne, sprzężenia krzyżowe i sprzężenia nierówne. Sprzężenia krzyżowe i sprzężenia nierówne są zaawansowanymi typami sprzężeń i są rzadko używane, ale należy o nich wiedzieć, aby mieć pełne zrozumienie sposobu działania sprzężeń.

Sprzężenia wewnętrzne: tylko powiązane dane z obu tabel razem

Sprzężenie wewnętrzne to sprzężenie, w którym program Access uwzględnia dane z tabeli tylko wtedy, gdy w powiązanej tabeli znajdują się odpowiednie dane i odwrotnie. W większości przypadków będziesz używać sprzężeń wewnętrznych. Gdy tworzysz sprzężenie i nie określasz, jakiego rodzaju jest to sprzężenie, program Access zakłada, że chcesz utworzyć sprzężenie wewnętrzne. Sprzężenia wewnętrzne są przydatne, ponieważ umożliwiają łączenie danych z dwóch źródeł na podstawie udostępnionych wartości, dzięki czemu dane są widoczne tylko wtedy, gdy istnieje pełny obraz.

Sprzężenia zewnętrzne: wszystkie powiązane dane są prawidłowo łączone oraz wszystkie pozostałe rekordy z jednej tabeli

Sprzężenie zewnętrzne przypomina sprzężenie wewnętrzne, ale dodaje pozostałe wiersze z jednej z tabel. Sprzężenia zewnętrzne mają kierunek: lewe sprzężenie zewnętrzne zawiera wszystkie rekordy z lewej tabeli — pierwszą tabelę sprzężenia — a prawe sprzężenie zewnętrzne — wszystkie rekordy z prawej tabeli — drugą tabelę sprzężenia.

Pełne sprzężenia zewnętrzne: wszystkie dane połączone tam, gdzie jest to możliwe

W niektórych systemach sprzężenie zewnętrzne może zawierać wszystkie wiersze z obu tabel z wierszami połączonymi, gdy odpowiadają. Jest to nazywane pełnym sprzężeniami zewnętrznymi, a program Access nie obsługuje ich jawnie. Można jednak użyć sprzężenia krzyżowego i kryteriów, aby osiągnąć ten sam efekt.

Sprzężenia krzyżowe: wszystkie dane połączone w każdy możliwy sposób

W większości przypadków sprzężenie krzyżowe jest efektem ubocznym dodawania dwóch tabel do zapytania, a następnie zapominania o ich sprzężeniu. Program Access interpretuje to tak, aby każdy rekord z jednej tabeli był widoczny w połączeniu z każdym rekordem z drugiej tabeli — każdą możliwą kombinacją rekordów. Ponieważ nie można łączyć żadnych danych, tego rodzaju sprzężenie rzadko daje przydatne wyniki. Istnieje jednak kilka sytuacji, gdy sprzężenie krzyżowe jest potrzebne.

Nierówne sprzężenia: jak zwykłe sprzężenie, ale łączenie wierszy przy użyciu innego porównania

Sprzężenia nierówne używają operatora innego niż znak równości (=), aby porównać wartości i określić, czy i jak połączyć dane. Sprzężenia nierówne nie są jawnie obsługiwane, ale można użyć sprzężenia krzyżowego i kryteriów, aby osiągnąć ten sam efekt.

Pokazywanie wierszy, w których istnieje wspólna wartość w obu sprzężonych tabelach

Jeśli chcesz wyświetlić tylko te wiersze, które mają pasujące wartości w polu sprzężonym, użyj sprzężenia wewnętrznego. Program Access automatycznie tworzy sprzężenia wewnętrzne.

Sprzężenia wewnętrzne to najpopularniejszy typ sprzężenia. Informują one zapytanie, że wiersze z jednej ze sprzężonych tabel odpowiadają wierszom w drugiej tabeli na podstawie danych w połączonych polach. Po uruchomieniu zapytania ze sprzężeniami wewnętrznymi w operacjach zapytania zostaną uwzględnione tylko te wiersze, w których istnieje wspólna wartość w obu sprzężonych tabelach.

Jak mogę użyć sprzężenia wewnętrznego?

W większości przypadków nie musisz nic robić, aby użyć sprzężenia wewnętrznego. Jeśli tabele dodawane do zapytania mają już relacje, podczas dodawania tabel program Access automatycznie tworzy sprzężenie wewnętrzne między każdą parą powiązanych tabel. Jeśli więzy integralności jest wymuszane, program Access wyświetla również znak "1" powyżej linii sprzężenia, aby pokazać, która tabela znajduje się po stronie "jeden" relacja jeden-do-wielu i symbol nieskończoności (), aby pokazać, która tabela znajduje się po stronie "wiele".

Nawet jeśli relacje nie zostały utworzone, program Access automatycznie tworzy sprzężenia wewnętrzne, jeśli do zapytania zostaną dodane dwie tabele, a każda z nich będzie miała pole o tym samym lub zgodnym typie danych, a jedno z pól sprzężenia to klucz podstawowy. W tym przypadku symbole "jeden" i "wiele" nie są wyświetlane, ponieważ więzy integralności nie są wymuszane.

Jeśli dodasz zapytania do zapytania i nie utworzysz relacji między tymi zapytaniami, program Access nie utworzy automatycznie sprzężeń wewnętrznych między tymi zapytaniami ani między zapytaniami i tabelami. Ogólnie rzecz biorąc, należy je utworzyć samodzielnie. Sprzężenie wewnętrzne tworzy się, przeciągając pole z jednego źródła danych do pola w innym źródle danych. Program Access wyświetli linię między tymi dwoma polami, co oznacza, że sprzężenie zostało utworzone.

Składnia SQL sprzężenia wewnętrznego

Sprzężenia wewnętrzne są określone w języku SQL w klauzuli FROM, jak pokazano poniżej:

FROM tabela1 INNER JOIN tabela2 ON tabela1.pole1 porównaj tabelę2.pole2

Operacja INNER JOIN zawiera następujące segmenty:

Segment

Opis

tabela1, tabela2

Nazwy tabel, z których pochodzą łączone rekordy.

pole1, pole2

Nazwy sprzęganych pól. Jeśli nie są to pola numeryczne, muszą mieć ten sam typ danych i zawierać ten sam rodzaj danych, ale mogą mieć inne nazwy.

Porównać

Dowolny relacyjny operator porównania: „=”, „<”, „>”, „<=”, „>=”, lub „<>”.

Aby uzyskać więcej informacji na temat składni sprzężenia wewnętrznego, zobacz temat Operacja INNER JOIN.

Początek strony

Wyświetlanie wszystkich wierszy z jednej tabeli i odpowiadających im wierszy z drugiej tabeli

Sprzężenia zewnętrzne informują zapytanie, że chociaż niektóre wiersze po obu stronach sprzężenia dokładnie odpowiadają, zapytanie powinno zawierać wszystkie wiersze z jednej tabeli, a także wiersze z drugiej tabeli, które mają wspólną wartość po obu stronach sprzężenia.

Sprzężenia zewnętrzne mogą być lewymi sprzężeniami zewnętrznymi lub prawymi sprzężeniami zewnętrznymi. W lewym sprzężeniu zewnętrznym zapytanie zawiera wszystkie wiersze z pierwszej tabeli w klauzuli FROM instrukcji SQL oraz tylko wiersze z drugiej tabeli, w których pole sprzężenia zawiera wartości wspólne dla obu tabel. W prawym sprzężeniu zewnętrznym zapytanie zawiera wszystkie wiersze z drugiej tabeli w klauzuli FROM instrukcji SQL oraz tylko te wiersze z drugiej tabeli, w których pole sprzężenia zawiera wartości wspólne dla obu tabel.

Uwaga: Możesz łatwo określić, która tabela jest lewą tabelą lub prawą tabelą w danym sprzężeniu, klikając dwukrotnie sprzężenie, a następnie w oknie dialogowym Właściwości sprzężenia . Możesz również przełączyć się do widoku SQL, a następnie sprawdzić klauzulę FROM.

Ponieważ niektóre wiersze po jednej stronie sprzężenia zewnętrznego nie będą miały odpowiadających im wierszy z drugiej tabeli, niektóre pola zwrócone w wynikach zapytania z tej drugiej tabeli będą puste, gdy wiersze nie będą odpowiadać.

Jak mogę użyć sprzężenia zewnętrznego?

Aby utworzyć sprzężenie zewnętrzne, należy zmodyfikować istniejące sprzężenie wewnętrzne. Jeśli nie istnieje sprzężenie wewnętrzne, należy je utworzyć, a następnie zmienić je na sprzężenie zewnętrzne.

Zmienianie sprzężenia wewnętrznego na sprzężenie zewnętrzne

  1. W widoku projektu zapytania kliknij dwukrotnie sprzężenie, które chcesz zmienić.

    Zostanie wyświetlone okno dialogowe Właściwości sprzężenia.

  2. W oknie dialogowym Właściwości sprzężenia zanotuj opcje wymienione obok opcji 2 i opcji 3.

  3. Kliknij opcję, której chcesz użyć, a następnie kliknij przycisk OK.

  4. Program Access wyświetli sprzężenie i wyświetli strzałkę wskazującą źródło danych, w którym wszystkie wiersze zostaną uwzględnione w źródle danych, w którym zostaną uwzględnione tylko wiersze spełniające warunek sprzężenia.

Niejednoznaczne sprzężenia zewnętrzne

Jeśli tworzysz zapytanie zawierające sprzężenie LEFT i INNER JOIN, program Access może nie być w stanie określić, którą operację sprzężenia wykonać w pierwszej kolejności. Ponieważ wyniki różnią się w zależności od tego, czy sprzężenie lewe, czy sprzężenie wewnętrzne jest wykonywane jako pierwsze, program Access wyświetla komunikat o błędzie:

Aby naprawić ten błąd, należy zmodyfikować zapytanie tak, aby było jasne, które sprzężenie wykonać w pierwszej kolejności.

Składnia SQL sprzężenia zewnętrznego

Sprzężenia zewnętrzne są określone w języku SQL w klauzuli FROM, jak pokazano poniżej:

FROM tabela1 [ LEFT | RIGHT ] JOIN tabela2ON tabela1.pole1 porównanie tabela2.pole2

Operacje LEFT JOIN i RIGHT JOIN zawierają następujące segmenty:

Segment

Opis

tabela1, tabela2

Nazwy tabel, z których pochodzą łączone rekordy.

pole1, pole2

Nazwy sprzęganych pól. Pola muszą mieć ten sam typ danych i zawierać ten sam rodzaj danych, ale mogą mieć inne nazwy.

Porównać

Dowolny relacyjny operator porównania: „=”, „<”, „>”, „<=”, „>=”, lub „<>”.

Aby uzyskać więcej informacji na temat składni sprzężenia zewnętrznego, zobacz temat LEFT JOIN, RIGHT JOIN Operations.

Początek strony

Pokazywanie wszystkich wierszy z obu tabel i łączenie ich tam, gdzie istnieje wspólna wartość

Aby wyświetlić wszystkie wiersze z dwóch tabel i połączyć je na podstawie typowych wartości, należy użyć pełnego sprzężenia zewnętrznego. Program Access nie obsługuje jawnie pełnych sprzężeń zewnętrznych, ale można osiągnąć ten sam efekt za pomocą zapytania składającego. W poniższej procedurze wyjaśniono, jak to zrobić, ale jeśli chcesz uzyskać więcej informacji na temat zapytań składających, zobacz sekcję Zobacz też .

Aby użyć zapytania składającego w celu wykonania pełnego sprzężenia zewnętrznego:

  1. Utwórz zapytanie, które ma lewe sprzężenie zewnętrzne w polu, którego chcesz użyć do pełnego sprzężenia zewnętrznego.

  2. Na karcie Narzędzia główne w grupie Widoki kliknij pozycję Widok i kliknij pozycję Widok SQL.

  3. Naciśnij klawisze CTRL+C, aby skopiować kod SQL.

  4. Usuń średnik na końcu klauzuli FROM, a następnie naciśnij klawisz ENTER.

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

    Uwaga: Nie używaj słowa kluczowego ALL podczas wykonywania pełnego sprzężenia zewnętrznego za pomocą zapytania składającego.

  6. Naciśnij klawisze CTRL+V, aby wkleić kod SQL skopiowany w kroku 3.

  7. W wklejonym kodzie zmień pozycję LEFT JOIN na RIGHT JOIN.

  8. Usuń średnik na końcu drugiej klauzuli FROM, a następnie naciśnij klawisz ENTER.

  9. Dodaj klauzulę WHERE określającą, że wartość pola sprzężenia to NULL w pierwszej tabeli wymienionej w klauzuli FROM (lewej tabeli).

    Jeśli na przykład klauzula FROM jest:

    FROM Products RIGHT JOIN [Order Details]  ON Products.ID = [Order Details].[Product ID]

    Należy dodać następującą klauzulę WHERE:

    WHERE Products.ID IS NULL

  10. Wpisz średnik (;) na końcu klauzuli WHERE, aby wskazać koniec zapytania składającego.

  11. Na karcie Projektowanie w grupie Wyniki kliknij przycisk Uruchom.

Sprzężenia krzyżowe

Sprzężenia krzyżowe różnią się od sprzężeń wewnętrznych i zewnętrznych, ponieważ nie są jawnie reprezentowane w Access. W sprzężeniu krzyżowym każdy wiersz z jednej tabeli jest łączony z każdym wierszem z innej tabeli, co skutkuje tak zwanym produktem krzyżowym lub produktem kartezjańskim. Za każdym razem, gdy uruchamiasz zapytanie zawierające tabele, które nie są jawnie sprzężone, wynikiem jest międzyprodukt. Sprzężenia krzyżowe są zwykle przypadkowe, ale są przypadki, w których mogą być przydatne.

Dlaczego warto używać sprzężenia krzyżowego?

Jeśli chcesz sprawdzić każdą możliwą kombinację wierszy między dwiema tabelami lub zapytaniami, użyj sprzężenia krzyżowego. Załóżmy na przykład, że Twoja firma miała spektakularny rok i rozważasz przyznanie rabatów klientom. Możesz utworzyć zapytanie, które zsumuje zakupy każdego klienta, utworzyć małą tabelę zawierającą kilka możliwych procentów rabatów i połączyć je w inne zapytanie wykonujące sprzężenie krzyżowe. W końcu zostanie wyświetlone zapytanie wyświetlające zestaw hipotetycznych rabatów dla każdego klienta.

Jak mogę użyć sprzężenia krzyżowego?

Sprzężenie krzyżowe jest tworzone za każdym razem, gdy dołączasz tabele lub zapytania do zapytania i nie tworzysz co najmniej jednego jawnego sprzężenia dla każdej tabeli lub zapytania. Program Access łączy wszystkie wiersze z każdej tabeli lub zapytania, które nie są jawnie sprzężone z żadną inną tabelą lub zapytaniem, ze każdym innym wierszem w wynikach. Rozważ scenariusz rabatu z poprzedniego akapitu. Załóżmy, że masz 91 klientów i chcesz sprawdzić pięć możliwych procentów rabatów. Sprzężenie krzyżowe daje 455 wierszy (iloczyn 91 i 5).

Jak można sobie wyobrazić, przypadkowe sprzężenia krzyżowe mogą tworzyć ogromną liczbę wierszy w wynikach zapytania. Ponadto wyniki te są na ogół bez znaczenia, ponieważ jeśli nie zamierzasz łączyć każdego wiersza z każdym innym wierszem, większość połączonych wierszy, które pojawiają się w wynikach, nie będzie mieć sensu. Na koniec uruchamianie zapytań używających niezamierzonych sprzężeń krzyżowych może zająć bardzo dużo czasu.

Niezamierzone sprzężenie krzyżowe w widoku Projekt kwerendy

1. Zakreślone pola powinny być połączone ze sobą.

Niezamierzony iloczyn wektorowy

1. Zwróć uwagę na bardzo dużą liczbę rekordów.

Poprawiony wynik kwerendy

1. Należy pamiętać, że liczba rekordów jest znacznie mniejsza.

Początek strony

Łączenie tabel na podstawie nierówności wartości pól

Sprzężenia nie muszą opierać się na równoważności sprzężonych pól. Sprzężenie może być oparte na dowolnym operatorie porównania, takim jak większe niż (>), mniejsze niż (<) lub nie równe (<>). Sprzężenia, które nie są oparte na równoważności są nazywane sprzężeniami nierównymi.

Aby połączyć wiersze dwóch źródeł danych na podstawie wartości pól, które nie są równe, należy użyć sprzężenia nierównego. Zazwyczaj sprzężenia nierówne są oparte na operatorach porównania większych niż (>), mniejszych niż (<), większych lub równych (>=) lub mniejszych niż (<=). Nierówne sprzężenia oparte na operatorie nie równa się (<>) mogą zwracać prawie tyle wierszy co sprzężenia krzyżowe, a interpretowanie wyników może być trudne.

Jak mogę użyć sprzężenia nierównego?

Sprzężenia nierówne nie są obsługiwane w widoku projektu. Jeśli chcesz ich używać, musisz to zrobić za pomocą widoku SQL. Można jednak utworzyć sprzężenie w widoku projektu, przełączyć się do widoku SQL, znaleźć operator porównania równa się (=) i zmienić go na operator, którego chcesz użyć. Po wykonaniu tej czynności można ponownie otworzyć zapytanie tylko w widoku projektu, jeśli najpierw zmienisz operator porównania z powrotem na równe (=) w widoku SQL.

Usuwanie sprzężenia

Jeśli program Access automatycznie utworzy sprzężenie, którego nie chcesz, lub jeśli sprzężenie zostanie utworzone przez pomyłkę — na przykład sprzężenie między dwoma polami o niezgodnych typach danych — możesz usunąć sprzężenie.

  1. W siatce projektu zapytania kliknij sprzężenie, które chcesz usunąć.

  2. Naciśnij klawisz DELETE.

— lub —

  • W siatce projektu zapytania kliknij prawym przyciskiem myszy sprzężenie, które chcesz usunąć, a następnie kliknij polecenie Usuń.

Początek strony

Dodawanie rekordów do tabeli przy użyciu zapytania dołączanego

Łączenie wyników kilku zapytań wybierających przy użyciu zapytania składającego

Tworzenie zapytania opartego na wielu tabelach

Tworzenie, edytowanie lub usuwanie relacji

Potrzebujesz dalszej pomocy?

Chcesz uzyskać więcej opcji?

Poznaj korzyści z subskrypcji, przeglądaj kursy szkoleniowe, dowiedz się, jak zabezpieczyć urządzenie i nie tylko.

Społeczności pomagają zadawać i odpowiadać na pytania, przekazywać opinie i słuchać ekspertów z bogatą wiedzą.