Корелация и несвързани помежду си подзаявки - studopediya

ALL оператор се използва за сравняване на израза с всяка стойност в списъка. Този списък може да бъде както на фиксирани и подзаявка възвръщаемост. ВСИЧКИ се използва в комбинация с знака за равенство <(или <=),> (Или> =) =.

> ВСИЧКИ (> = ALL) означава, че експресията трябва да бъде по-голяма от (по-голямо или равно) на всяка стойност от списъка. Това условие е изпълнено, ако изразът е по-голяма (по-голямо или равно на) максималната стойност от списъка.

= ALL - означава, че изразът трябва да бъде равна на всяка стойност от списъка. (Разбира се, че ще бъдат изпълнени само ако в списъка на една или повече от стойността на една и съща стойност.)

Пример: Намерете служители, които са били наети преди всички служители в позициите на "Warehouse Manager":

КЪДЕ start_date

КЪДЕТО заглавието = 'Warehouse Manager');

Както вече споменахме, състояние, с оператор

КЪДЕ start_date <(SELECT MIN(start_date)

КЪДЕТО заглавието = 'Warehouse Manager');

В допълнение подзаявки единици в единична линия и няколко реда, има разделение в корелирани подзаявки и несвързани помежду си. Това избран некорелиран подзаявка не зависи от външно търсене. Всички лекции в примера по-горе, използвани несвързани помежду подзаявки. Корелативна подзаявка съдържа позоваване на заявка за външни данни и се извършва повече от един път, а всеки ред във външната заявка.

Пример: Намери всички служители, чиито заплати е същото като служител на име Ngao:

Къде Ngao "IN (SELECT last_name

Тук използваме мулти-корелация подзаявка, ще разгледаме как работи. Както вече бе споменато, под-заявка се изпълнява за всеки ред в картонената заявката. Това е, за всяко име, което избира външния запитването, подзаявка избира служители със същата заплата като тази на работника или служителя, избран от външната заявка. Ако подзаявка сред избрани служители имат служител на име Ngao, а след това на работника или служителя, избран от външната заявката отговаря на изискванията на този проблем и трябва да се стигне до снимачната площадка резултат.

Всяко не-корелира подзаявка може да бъде пренаписана като корелативна, но е проблем, който може да бъде решен само чрез корелирани под-заявки.

Пример: Намери всички служители, чиито заплати надвишават средната заплата в техния отдел:

SELECT last_name, заплата

КЪДЕ заплата> (SELECT AVG (заплата)

Тук се използва един-корелация подзаявка. За всеки служител, избран външната заявка, подзаявка изчислява средния отдел заплата, в която работи служителя. Ако заплатата на служител, избран външен искане надвишава средната заплата избран от подзаявка, служител пропуска пробата.