Edytowanie instrukcji SQL w celu sprecyzowania wyników kwerendy

Dotyczy
Access dla Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Jeśli Twoje kwerendy nie działają wystarczająco intensywnie, dodanie podstawowych instrukcji SQL może ułatwić ukierunkowanie wyników. Przyjrzyjmy się teraz kilku typom instrukcji SQL oraz klauzulom i częściom, które można edytować, aby uzyskać żądane wyniki.

W tym artykule

Tworzenie instrukcji Select

Instrukcja SQL select składa się z dwóch do trzech klauzul. Klauzula SELECT wskazuje bazie danych, gdzie należy szukać danych, i prosi o zwrócenie określonego wyniku.

Uwaga

Instrukcje SELECT zawsze kończą się znakiem średnika (;) na końcu ostatniej klauzuli lub w osobnym wierszu na końcu instrukcji SQL.

Poniższa instrukcja select monituje program Access o pobranie informacji z kolumn Adres e-mail i Firma, z tabeli Kontakty, a konkretnie z miejsca, w którym w kolumnie Miasto znajduje się wyraz "Szczecin".

Karta obiektu SQL z wyświetloną instrukcją SELECT

Powyższe zapytanie zawiera trzy klauzule: SELECT, FROM i WHERE.

1. Klauzula SELECT zawiera listę kolumn zawierających dane, których chcesz użyć, i zawiera operator (SELECT), po którym występują dwa identyfikatory (Adres e-mail i Firma). Jeśli identyfikator zawiera spacje lub znaki specjalne (tak jak "Adres e-mail"), należy go ująć w nawiasy kwadratowe.

2. Klauzula FROM identyfikuje tabelę źródłową. W tym przykładzie znajduje się operator (FROM), po którym występuje identyfikator (Kontakty).

3. Klauzula WHERE jest klauzulą opcjonalną. W przykładzie występuje operator (WHERE), po którym występuje wyrażenie (Miasto="Szczecin").

Aby uzyskać więcej informacji na temat zapytań wybierających, zobacz Tworzenie prostej kwerendy wybierającej.

Poniżej przedstawiono listę typowych klauzul języka SQL:

Klauzula SQL Opis Wymagane?
SELECT Zwraca listę pół zawierających wskazane dane. Tak
FROM Zwraca listę tabel zawierających pola wymienione w klauzuli SELECT. Tak
WHERE Określa kryteria pól, które musi spełnić rekord, aby został uwzględniony w wynikach. Nie
ORDER BY Określa sposób sortowania wyników. Nie
GROUP BY W instrukcji SQL zawierającej funkcje agregujące zwraca listę pól, które nie są podsumowywane w klauzuli SELECT. Tylko jeśli istnieją takie pola
HAVING W instrukcji SQL zawierającej funkcje agregujące określa warunki stosowane do pól podsumowywanych w klauzuli SELECT. Nie

Każda klauzula SQL składa się z terminów. Poniżej przedstawiono listę niektórych typowych terminów języka SQL.

Termin SQL Definicja Przykład
identyfikator Nazwa identyfikująca obiekt bazy danych, na przykład nazwa kolumny. [Adres e-mail] i Firma
operator Słowo kluczowe reprezentujące lub modyfikujące akcję. AS
stała Wartość nie ulegająca zmianie, na przykład liczba albo wartość NULL. 42
wyrażenie Kombinacja identyfikatorów, operatorów, stałych i funkcji, która w wyniku daje pojedynczą wartość. >= Produkty. [Cena jednostkowa]

Początek strony

Dostosowywanie klauzuli SELECT

Dostosowywanie Przykład
, aby zobaczyć tylko unikatowe wartości.
Użyj słowa kluczowego DISTINCT w klauzuli SELECT.
Jeśli na przykład klienci są z kilku różnych oddziałów firmy i niektórzy mają ten sam numer telefonu, a numer telefonu ma być wymieniony tylko raz, klauzula SELECT może wyglądać następująco:SELECT DISTINCT [txtCustomerPhone]
Aby zmienić sposób wyświetlania identyfikatora w widoku arkusza danych w celu zwiększenia czytelności.
W klauzuli SELECT należy użyć operatora AS (słowo kluczowe reprezentujące akcję lub modyfikujące akcję) z aliasem pola. Alias pola to nazwa przypisana do pola w celu zwiększenia czytelności wyników.
SELECT [txtCustPhone] AS [Telefon klienta]

Dostosowywanie klauzuli FROM

Dostosowywanie Przykład
W instrukcji wybierającej można użyć aliasu tabeli lub innej nazwy przypisywanej do tabeli. Alias tabeli jest przydatny, jeśli nazwa tabeli jest długa, szczególnie gdy występuje wiele pól o takich samych nazwach, ale pochodzących z różnych tabel. Aby wybrać dane z dwóch pól o nazwie ID, z których jedno pochodzi z tabeli tblCustomer, a drugie z tabeli tblOrder:
SELECT [tblCustomer]. [IDENTYFIKATOR],
[tblOrder]. [IDENTYFIKATOR]
Użyj operatora AS, aby zdefiniować aliasy tabel w klauzuli FROM:
FROM [tblCustomer] AS [C],
[tblOrder] AS [O]
Tych aliasów tabel można użyć w klauzuli SELECT w następujący sposób:SELECT [C]. [IDENTYFIKATOR],
[O]. [IDENTYFIKATOR]
Sprzężenia służą do łączenia par rekordów z dwóch źródeł danych w jeden wynik lub do określania, czy mają być uwzględniane rekordy z dowolnej tabeli, jeśli odpowiadający im rekord nie występuje w tabeli pokrewnej.
Sprzęganie tabel tak, aby zapytanie połączyło elementy z tabel i wykluczało elementy, które nie istnieją wraz z nimi w drugiej tabeli
Klauzula FROM może wyglądać następująco:FROM [tblCustomer]
INNER JOIN [tblOrder]
ON [tblCustomer]. [CustomerID]=[tblOrder]. [CustomerID]

Informacje na temat używania sprzężeń

Istnieją dwa typy sprzężeń — sprzężenia wewnętrzne i sprzężenia zewnętrzne. Sprzężenia wewnętrzne są częściej stosowane w zapytaniach. W przypadku uruchomienia zapytania ze sprzężeniem wewnętrznym w wynikach zostaną wyświetlone tylko te elementy, dla których istnieje wspólna wartość w obu sprzężonych tabelach.

Sprzężenia zewnętrzne określają, czy dane mają być uwzględniane w przypadkach, gdy nie istnieje wspólna wartość. Sprzężenia zewnętrzne są kierunkowe, co oznacza, że można określić, czy uwzględniane mają być wszystkie rekordy z pierwszej tabeli określonej w sprzężeniu (nazywanej lewym sprzężeniem), czy też uwzględniane mają być wszystkie rekordy z drugiej tabeli w sprzężeniu (nazywanej prawym sprzężeniem). Sprzężenie zewnętrzne ma następującą składnię SQL:

FROM table1 [ LEFT | RIGHT ] JOIN table2
ON table1.field1 = table2.field2

Więcej informacji o używaniu sprzężeń w zapytaniach znajdziesz w artykule Sprzęganie tabel i zapytań.

Początek strony

Dostosowywanie klauzuli WHERE

Klauzula WHERE zawiera kryteria ułatwiające ograniczenie liczby elementów zwracanych w zapytaniu. Zobacz przykłady kryteriów zapytań i opis sposobu ich działania.

Przykładem sposobu dostosowywania podstawowej klauzuli WHERE jest ograniczenie wyników zapytania. Załóżmy, że chcesz zlokalizować numer telefonu klienta i pamiętasz tylko jego nazwisko jako Bagel. W tym przykładzie nazwiska są przechowywane w polu LastName, więc składnia SQL jest następująca:

WHERE [LastName]='Bagel'

Klauzula WHERE umożliwia też łączenie źródeł danych dla kolumn zawierających zgodne dane, ale różniące się typem. Jest to przydatne, ponieważ nie można utworzyć sprzężenia między polami o różnych typach danych. Używanie jednego pola jako kryterium drugiego pola ze słowem kluczowym LIKE . Jeśli na przykład chcesz użyć danych z tabel Składniki majątku i tabeli Pracownicy, tylko wtedy, gdy typ składnika majątku w polu Typ składnika majątku tabeli Składniki majątku ma numer 3 w polu Ilość w tabeli Pracownicy, klauzula WHERE będzie wyglądała następująco:

WHERE field1 LIKE field2

Ważne

Nie można określić kryteriów dla pola używanego z funkcją agregującą w klauzuli WHERE. Zamiast tego należy użyć klauzuli HAVING w celu określenia kryteriów dla pól agregowanych.

Początek strony

Dostosowywanie za pomocą operatora UNION

Operator UNION służy do wyświetlania połączonego widoku wyników kilku podobnych zapytań wybierających. Załóżmy na przykład, że baza danych zawiera tabelę Produkty i tabelę Usługi i obie zawierają trzy pola: oferta na wyłączność lub produkt lub usługa, cena, gwarancja lub rękojmia. Chociaż w tabeli Produkty są przechowywane informacje o rękojmi, a w tabeli Usługi są przechowywane informacje o gwarancji, podstawowe informacje są takie same. Za pomocą zapytania składającego można połączyć trzy pola z dwóch tabel w następujący sposób:

SELECT name, price, warranty, exclusive_offer
FROM Products
UNION ALL
SELECT name, price, guarantee, exclusive_offer 
FROM Services;

Po uruchomieniu kwerendy dane z każdego zestawu odpowiadających sobie pól są łączone w jedno pole wyjściowe. Aby uwzględnić zduplikowane wiersze w wynikach, użyj operatora ALL.

Uwaga

Instrukcja Select musi mieć taką samą liczbę pól wyjściowych, w tej samej kolejności i z identycznymi lub zgodnymi typami danych. Na potrzeby zapytania składającego typy danych Liczba i Tekst są zgodne.

Aby uzyskać więcej informacji na temat zapytań składających, zobacz temat Używanie zapytania składającego w celu wyświetlania zbiorczego wyniku wielu zapytań.

Początek strony