Encyklopedia SQL - Łączenie warunków ograniczających - AND, OR, WHERE
Autor: Paweł Wilkosz
Opublikowano: 2012-01-19
Z poprzedniej publikacji dowiedziałeś się, w jaki sposób ograniczać zbiór wyników za pomocą klauzuli WHERE. W kolejnej części zostanie zaprezentowany sposób łączenia wielu instrukcji logicznych, składających się na pojedynczy warunek, za pomocą AND i OR.
Przed wykonaniem zadań zapoznaj się z następującym materiałem:
- Wyświetlanie danych, podstawowy SELECT i wybór kolumn
- Ograniczanie wyświetlania wierszy, podstawy WHERE
Po wykonaniu zadań będziesz wiedział:
- w jaki sposób łączyć ze sobą warunki ograniczania zbioru wynikowego za pomocą AND oraz OR.
Instrukcja AND
Podczas konstruowania warunku logicznego, zawartego w klauzuli WHERE, niejednokrotnie staniesz w obliczu problemu wielowarunkowości. W praktyce oznacza to, iż dany rekord podlegać będzie wyświetleniu wyłącznie wtedy, gdy wszystkie warunki zostaną spełnione. Język SQL umożliwia rozwiązanie tego problemu, oferując opcję łączenia poszczególnych warunków za pomocą słowa kluczowego AND, wykorzystywanego w WHERE. W najprostszej formie przyjmie ona następującą postać:
SELECT kolumna1, kolumna2,…kolumnaN
FROM Tabela
WHERE warunek1 AND warunek2 … AND warunekN
Przykładowo, aby wyświetlić z tabeli Person.Contact bazy danych AdventureWorks adresy e-mail wszystkich mężczyzn, których nazwisko zaczyna się na literę ‘A’, musisz wykonać następujące zapytanie:
SELECT EmailAddress
FROM Person.Contact
WHERE Title = ‘Mr.’
AND LastName LIKE ‘A%’
co w rezultacie zwróci następujący wynik (Rys. 1.):
Rys. 1. Wynik wykonania zapytania z dwoma warunkami logicznymi.
Oczywiście nic nie stoi na przeszkodzie, aby zapytanie zawierało więcej warunków logicznych, oddzielonych od siebie za pomocą słowa kluczowego AND.
Instrukcja OR
Instrukcja OR działa podobnie do AND, z tą różnicą, iż wystarczy, aby co najmniej jeden warunek został spełniony oraz aby dany rekord został uwzględniony w zbiorze wynikowym. Podstawowa składnia WHERE z OR wygląda następująco:
SELECT kolumna1, kolumna2,…kolumnaN
FROM Tabela
WHERE warunek1 OR warunek2 … OR warunekN
W kolumnie Title tabeli Person.Contact nie wszędzie została określona płeć danego użytkownika (pole jest oznaczone jako NULL). Aby wyciągnąć adresy e-mail wszystkich kobiet, musisz wyszukać te rekordy, które posiadają wpis Ms. lub NULL (i wtedy ewentualnie manualnie możesz wprowadzić informację, czy dana osoba jest kobietą czy mężczyzną). W związku z tym jeden z tych dwóch warunków musi zostać spełniony. Konstrukcja zapytania przyjmie następującą postać:
SELECT EmailAddress
FROM Person.Contact
WHERE Title = ‘Mr.’
OR Title = ‘NULL’
Łączenie OR i AND
Ponieważ język SQL działa na zasadzie rachunku predykatów, dozwolone jest łączenie zarówno funkcji AND jak i OR w klauzuli WHERE. Można to zastosować w sytuacji, jeśli jesteś zainteresowany tylko tymi rekordami z tabeli Person.Contact bazy danych AdventureWorks, które odnoszą się do osób o zdefiniowanej płci (kobieta bądź mężczyzna) i których nazwisko zaczyna się na literę A lub S. Niniejszy cel da się osiągnąć za pomocą następującego zapytania:
SELECT EmailAddress
FROM Person.Contact
WHERE
(
Title = ‘Mr.’ OR Title = ‘Ms.’
)
AND
(
LastName LIKE ‘A%’ OR LastName LIKE ‘S%’
)
co zwróci wynik zgodny z Rys. 2.
Rys. 2. Łączenie warunków logicznych za pomocą AND i OR.
Informacja |
Zapamiętaj, że:
|
Podsumowanie
W niniejszej części dowiedziałeś się, w jaki sposób efektywnie wykorzystywać łączenie wielu prostych warunków logicznych za pomocą słów kluczowych AND i OR.
W kolejnej części nauczysz się określać warunki niebinarne, tzn takie, których prawda logiczna oceniana jest na podstawie złożonej funkcji (IN, BETWEEN).
Dodatkowo zobacz: