Where

WHERE jest odpowiedzią na pytanie z poprzedniego wpisu: "Co jeśli chcemy zawęzić nieco dalej kryteria wyszukiwania?" Może się zdarzyć, że potrzebujemy określonej liczby produktów, albo produktów jedynie o określonych wymiarach. W tym miejscu pojawia się komenda WHERE. Pozwala na dodawanie warunków do naszej instrukcji.

SELECT ProductID, Name, Size, StandardCost FROM Production.Product
WHERE StandardCost < 35
Tak przygotowane zapytanie zwraca nam produkty, których koszt jest mniejsz niż 35: Instrukcja Where Na pierwszy rzut oka nie widać żadnej różnicy. Wszystko dlatego, że w pierwszej kolejności wyświetlają się rekordy, których standardowy koszt jest określony na 0 oraz fakt, że nie jesteśmy w stanie zobaczyć wszystkich rekordów na powyższym zrzucie ekranu.

Wykroczymy nieco poza zakres tego wpisu. Wykorzystamy instrukcję COUNT celem sprawdzenia ile rekordów zostało zwróconych bez/z klauzulą WHERE. Spójrzcie poniżej:

-- zapytanie zwraca 504 rekordy bez użycia klauzuli WHERE
SELECT COUNT(*) as counter FROM Production.Product

-- zapytania zwraca 272 rekordy z użyciem klauzuli WHERE
SELECT COUNT(*) as counter FROM Production.Product
WHERE StandardCost < 35 
Możemy również łączyć wiele warunków za pomocą operatora AND:
SELECT ProductID, Name, Size, StandardCost FROM Production.Product
WHERE StandardCost > 10 AND StandardCost < 35
W powyższym przypadku ogranicza on listę produktów do tych, których koszt jest większy niż 10 ale również nie dochodzi do 35: Instrukcja Where Spójrzmy jeszcze na liczbę zwracanych rekordów:
-- zapytanie zwraca 49 rekordów z użyciem klauzuli WHERE oraz operatorem AND
SELECT COUNT(*) as counter FROM Production.Product
WHERE StandardCost > 10 AND StandardCost < 35
Kolejnym często używanym operatorem jest OR:
SELECT ProductID, Name, Size, StandardCost FROM Production.Product
WHERE StandardCost < 10 OR StandardCost > 35
W tym przypadku skupiamy się również na produktach z pewnego zakresu z zaznaczeniem, że poszukujemy produktów o naprawdę niskim LUB tych o bardzo wysokim koszcie.

Spójrzmy jeszcze na liczbę zwróconych rekordów:

-- zapytanie zwraca 455 rekordów z użyciem klauzuli WHERE oraz operatorem OR
SELECT COUNT(*) as counter FROM Production.Product
WHERE StandardCost < 10 OR StandardCost > 35

Pamiętajcie, aby każde z tych zapytań przetestować lokalnie u siebie na komputerze oraz wypróbować wiele kombinacji.