Бази даних

За допомогою SQL можна створювати вкладені запити. Зазвичай, внутрішній запит генерує значення яке перевіряється в умови для зовнішнього запиту.
Щоб оцінити зовнішній (основний) запит, SQL спочатку повинен оцінити внутрішній запит (або підзапит) всередині пропозиції WHERE. Результат внутрішнього запиту поміщається в основний запит замість підзапиту.

SELECT icodCust
FROM sales! Customer
WHERE yCredit <
(SELECT AVG (yCredit) FROM Customer);

Запит називається корельованим, якщо вибірка даних здійснюється за результатами іншого вибірки.
При використанні підзапитів в SQL можна звернутися до внутрішнього запиту таблиці в реченні зовнішнього запиту FROM. сформувавши корельований (або співвіднесений) підзапит. В цьому випадку підзапит виконується неодноразово, по одному разу для кожного рядка таблиці основного запиту.

SELECT icodeCust, yCredit, cCity
FROM sales! Customer Cust_X
WHERE yCredit> =
(SELECT AVG (yCredit) FROM sales! Customer Cust_Y
WHERE Cust_Y.cCity = Cust_X.cCity);
Cust_X, Cust_Y - псевдоніми таблиці.

Так як значення в поле cCity зовнішнього запиту змінюється, внутрішній запит повинен виконуватися окремо для кожного рядка зовнішнього запиту.
Розглянемо процедуру оцінки, яку виробляє корельований запит:
1. Вибрати рядок з таблиці, заданої в зовнішньому запиті. Це буде поточна рядок.
2. Зберегти значення з цього рядка в псевдонім з ім'ям в реченні FROM зовнішнього запиту.
3. Виконати підзапит. Скрізь, де псевдонім даний для зовнішнього запиту знайдено (в цьому випадку Cust_X), використовувати значення для поточного рядка. Використання значення з рядка зовнішнього запиту в підзапиті називається зовнішньої посиланням.
4. Оцінити умова зовнішнього запиту на основі результатів підзапиту виконуваного в кроці 3. (Визначається буде поточна рядок виводиться).
5. Повторити процедуру для наступного рядка таблиці, і так далі поки все рядки таблиці не будуть перевірені.

Схожі статті