Niniejszy artykuł pochodzi z zestawu artykułów dotyczących języka Access SQL. Omówiono w nim, jak napisać klauzulę WHERE, a także na przykładach przedstawiono różne techniki, których można używać w klauzuli WHERE.
W instrukcji SQL klauzula WHERE określa kryteria, jakie muszą spełniać wartości pól, aby zawierające je rekordy zostały uwzględnione w wynikach zapytania.
Aby zapoznać się z omówieniem języka Access SQL, zobacz artykuł Język Access SQL: podstawowe pojęcia, słownictwo i składnia.
W tym artykule
Ograniczanie wyników za pomocą kryteriów
Aby ograniczyć liczbę rekordów zwracanych w zapytaniu za pomocą danych, można użyć kryterium. Kryterium zapytania jest podobne do formuły — jest to ciąg, który może składać się z odwołań do pól, operatorów i stałych. Kryteria zapytania są typem wyrażenie.
W poniższej tabeli przedstawiono przykłady kryteriów oraz wyjaśniono ich działanie.
Kryteria |
Opis |
>25 and <50 |
To kryterium dotyczy pól typu Liczba, takich jak Cena albo StanMagazynu. Powoduje ono uwzględnianie tylko tych rekordów, w których pola Cena lub StanMagazynu zawierają wartość większą niż 25 i mniejszą niż 50. |
DateDiff ("rrrr"; [DataUrodzenia]; Date()) > 30 |
To kryterium dotyczy pól typu Data/Godzina, na przykład pola DataUrodzenia. W wyniku zapytania zostaną uwzględnione tylko te rekordy, w których liczba lat między datą urodzenia danej osoby a datą bieżącą jest większa niż 30. |
Is Null |
To kryterium można zastosować do pola dowolnego typu w celu pokazania rekordów, w których pole ma wartość null. |
Jak pokazano w powyższej tabeli, kryteria mogą różnić się między sobą w zależności od typu danych pola, do którego są stosowane, oraz w zależności od określonych wymagań. Niektóre kryteria są proste i używają podstawowych operatorów oraz stałych. Inne są złożone i zawierają funkcje oraz operatory specjalne, a także odwołania do pól.
Ważne: Jeśli pole jest używane wraz z funkcją agregującą, nie można określić dla tego pola kryteriów w klauzuli WHERE. Zamiast tego należy użyć klauzuli HAVING w celu określenia kryteriów dla pól agregowanych. Aby uzyskać więcej informacji, zobacz artykuły Język Access SQL: podstawowe pojęcia, słownictwo i składnia i Klauzula HAVING.
Składnia klauzuli WHERE
Kryteria zapytania są stosowane w klauzuli WHERE instrukcji SELECT.
Klauzula WHERE ma następującą składnię podstawową:
WHERE field = criterion
Potrzebny jest na przykład jest numer telefonu klienta, ale pamiętasz tylko, że jego nazwisko brzmi Bagel. Zamiast przeglądać wszystkie numery telefonów w bazie danych, można użyć klauzuli WHERE, aby ograniczyć wyniki i ułatwić odnalezienie odpowiedniego numeru telefonu. Jeśli nazwiska są przechowywane w polu o nazwie LastName, klauzula WHERE może wyglądać następująco:
WHERE [LastName]='Bagel'
Uwaga: Kryteriów w klauzuli WHERE nie trzeba opierać na równoważności wartości. Można stosować inne operatory porównania, takie jak „większe niż” (>) albo „mniejsze niż” (<). Na przykład WHERE [Cena]>100.
Łączenie źródeł danych za pomocą klauzuli WHERE
Czasami może być wymagane łączenie źródeł danych na podstawie pól zawierających zgodne dane, ale o innym typie. Na przykład pole w jednej tabeli zawiera dane typu Liczba, a ma zostać porównane z polem w innej tabeli zawierającym dane typu Tekst.
Nie można utworzyć sprzężenia między polami o różnych typach danych. Aby połączyć dane z dwóch źródeł danych na podstawie wartości w polach o różnych typach danych, należy utworzyć klauzulę WHERE, w której jedno pole będzie stanowić kryterium dla drugiego pola, stosując słowo kluczowe LIKE.
Przykładowo mają być używane dane z tabel o nazwach table1 i table2, ale tylko gdy dane z pola field1 (pola tekstowego w tabeli table1) pasują do danych z pola field2 (pola liczbowego w tabeli table2). Klauzula WHERE będzie przypominać następującą:
WHERE field1 LIKE field2
Aby uzyskać więcej informacji na temat tworzenia kryteriów do stosowania w klauzuli WHERE, zobacz artykuł Przykłady kryteriów zapytań.