SQL Server

ANY, ALL operatorlarının istifadə olunması

ANY, ALL operatorlarının istifadə olunması

Şəhərlərində yerləşmiş sifarişçiləri ilə olan agentlərin tapılmasının yeni üsuluna baxaq:

	SELECT *
	FROM Salespeople
	WHERE city = ANY (
	    SELECT city
	    FROM Customers
	)

Nəticə:

	SNUM  SNAME   CITY       COMM  
	----- ------- ---------- ----- 
	1001  Иванов  Москва     12
	1003  Егоров  Караганда  10

ANY operatoru alt sorğuda yazılmış bütün sorğunu götürür və əgər onlardan xarici sorğunun ixtiyari biri cari sətirdəki şəhərə bərabərdirsə onda onu doğru kimi qiymətləndirir. Bu o deməkdir ki alt sorğu, əsas şərtdəki qiymətə uyğun olan sorğunu seçməlidir.

Yuxarıda qeyd olunmuş sorğuda IN operatorundan da istifadə etmək olar. Amma ANY operatorunu yalnız bərabərlik operatoru ilə istifadə etmək olzaz. Məs, sifarişçiləri alfavit sırasında olan bütün agentləri tapmaq olar:

	SELECT * 
	FROM Salespeople 
	WHERE sname < ANY (
		SELECT cname 
		FROM Customers 
	)

Nəticə:

	SNUM  SNAME    CITY       COMM
	----- -------- ---------- -----
	1001  Иванов   Москва     12
	1002  Петров   Хабаровск  13
	1003  Егоров   Караганда  10
	1004  Сидоров  Сочи       11

ALL operatoru, əgər alt sorğu ilə seçilmiş xarici sorğunun hər biri şərti ödəyirsə onda o şərt doğru hesab edir. Reytinqi Moskvadakı sifarişçilərdən yüksək olan sifarişçiləri seçək:

	SELECT *
	FROM Customers
	WHERE rating > ALL(
	    SELECT rating
	    FROM Customers
	    WHERE city = 'Москва'
	)

Nəticə:

CNUM  CNAME                             CITY       RATING  SNUM
----- --------------------------------- ---------- ------- -----
2002  AО Бендер и К                     Одесса     200     1003
2003  Фирма ХХХ                         Рязань     200     1002
2004  Концерн "Дети лейтенанта Шмидта"  Бобруйск   300     1002
2008  ОАО "Валют-транзит"               Караганда  300     1007

SQL üçün səciyyəvi olan operatorlar haqda bu qədər. Bu sadə sorğular üzrə gəzdik. Ümumi alt sorğuları pyrəndik. Bir addım qaldı - UNION əmri vastəsi ilə ixtiyari sorğuları birləşdirmək haqda.