ZSBD-2st-1.2-w10.tresc-1.4-Slajd14
Klauzula WHERE
Podobnie jak klauzule FOR i LET klauzula WHERE jest opcjonalna.
Zadaniem klauzuli WHERE jest selekcja krotek wygenerowanych za pomocą klauzul FOR i LET, czyli zaprzestanie przetwarzania (odrzucenie) krotek, które nie spełniają zadanego warunku.
Wyrażenie zdefiniowane w klauzuli WHERE powinno być wyrażeniem logicznym i jest obliczane dla każdej z krotek. Jeśli wyrażenie jest prawdziwe, to krotka poddawana jest dalszemu przetwarzaniu, np. w ramach klauzuli RETURN lub ORDER BY. W przeciwnym wypadku krotka jest odrzucana.
Przykładowo klauzula WHERE w podzapytaniu umieszczonym we wnętrzu funkcji AVG (zapytanie to zostało przedstawione na slajdzie jako pierwsze) z dziesięciu krotek wygenerowanych przez klauzulę FOR, pozostawi tylko pięć, które dzięki klauzuli RETURN zostaną przekazane do dalszego przetwarzania za pomocą funkcji AVG. W naszym przypadku wartości te będą musiały spełnić warunek podzielności bez reszty przez 2, a zatem będą to wartości 2,4,6,8,10.
Zwróćmy uwagę, że w zapytaniu na poziomie funkcji AVG nie występują żadne z omówionych wcześniej klauzul.
Innym przykładem może być zapytanie przedstawione na slajdzie jako drugie.
W tym drugim przypadku elementy etat zostaną utworzone przez klauzulę RETURN tylko w przypadku, gdy na danym etacie znajduje się więcej niż dwóch pracowników. Odrzucenie pozostałych etatów – krotek jest realizowane za pomocą klauzuli WHERE weryfikującej liczbę elementów przypisanych do zmiennej $l.