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 < 35Tak przygotowane zapytanie zwraca nam produkty, których koszt jest mniejsz niż 35: 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 < 35Możemy również łączyć wiele warunków za pomocą operatora AND:
SELECT ProductID, Name, Size, StandardCost FROM Production.Product WHERE StandardCost > 10 AND StandardCost < 35W 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: 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 < 35Kolejnym często używanym operatorem jest OR:
SELECT ProductID, Name, Size, StandardCost FROM Production.Product WHERE StandardCost < 10 OR StandardCost > 35W 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.