Корельовані запити
У вкладеному запиті часто потрібно посилатися на значення стовпця впоточному рядку зовнішнього запиту. Розглянемо запит, що витягає з таблиціproducts назви придбаних товарів, для яких число куплених товарних позиційзбігається із запасами на складі (приклад).
SELECT name, count FROM products
WHERE count = (SELECT SUM(count) FROM orders
WHERE orders. id_product = products. id_product);
name count
Intel Pentium 4 3.0GHz 1
Gigabyte GA-8I848P-RS 4
У вкладеному запиті замість значення products.id_roduct підставляється поточне значення id_product із зовнішнього запиту. Вкладений запит міститьпосилання на стовпець таблиці products, незважаючи на те, що конструкціяfrom вкладеного запиту не згадує таблицю products. Такий зв'язок зовнішнього запиту з внутрішнім називається зовнішнім посиланням. Вкладений запит, який містить зовнішнє посилання, називаеться корельованим вкладеним запитом,тому що його результати корельовані з кожним рядком таблиці в зовнішньомузапиті. З тієї ж причини зовнішнє посилання називається іноді корелюючимпосиланням.
Вкладений запит може мати зовнішнє посилання на таблицю в конструкції fromбудь-якого запиту, який містить даний вкладений запит, незалежно від його рівня вкладеності. Наприклад, ім'я стовпця у вкладеному запиті четвертогорівня може стосуватися однієї з таблиць, зазначених у конструкції fromзовнішнього запиту, або до таблиці в будь-якому вкладеному запиті, що міститьданий вкладений запит четвертого рівня.