Онлайн час в Google Meet
Лого на 91. НЕГ „Проф. Константин Гълъбов“

12. клас · Модул 3 · Урок 24

Влагане на заявки

Вътрешна заявка на мястото на елемент от външната: влагане в WHERE (сравнение, IN, ANY, ALL) и влагане във FROM — с правилата, които трябва да спазваме.

Основание и пример

Понякога нужните кортежи не могат да се получат с една заявка. Пример: таблица Успех (Име, Фамилия, Average). Търсим учениците с личен среден успех по-висок от средния за класа. Не можем да напишем директен SELECT — средният успех на класа не ни е известен предварително. Двете стъпки:

  • Стъпка 1: SELECT Avg(Average) FROM Успех; — една стойност X (средният успех на класа).
  • Стъпка 2: SELECT * FROM Успех WHERE Average > X;

SQL позволява да заменим X направо с кода на първата заявка, затворена в кръгли скоби:

Правилата на влагането

Влагане на заявки

Поставянето на една заявка на мястото на елемент на друга. Външна е заявката, в която влагаме; вътрешна — вложената (най-често SELECT).

  • Вътрешната заявка е винаги в кръгли скоби.
  • В клаузата WHERE на външната може да се използва резултат само с една колона; в клаузата FROM — таблица с няколко колони.
  • Ако вътрешната връща колона с повече от един ред — в WHERE ползваме операциите за сравняване с множество: IN, NOT IN, ANY, ALL. Иначе — само сравнение стойност със стойност.
  • Вътрешната заявка не може да бъде сортирана.

Влагане в клаузата WHERE

IN / NOT IN

ANY и ALL

  • атрибут > ANY (вътрешна) — кортежите, в които стойността е по-голяма от някоя от извлечените.
  • атрибут > ALL (вътрешна) — по-голяма от всички извлечени стойности.

Влагане в клаузата FROM

На мястото на таблицата във FROM може да застане цяла заявка — например резултатът от тройното INNER JOIN от предишния урок.

Какво трябва да запомниш

  • Влагане = заявка на мястото на елемент; вътрешната е винаги в кръгли скоби.
  • В WHERE: една колона; един ред → сравнение, много редове → IN/NOT IN/ANY/ALL.
  • Вътрешната заявка не се сортира.
  • Във FROM: задължително AS имена на атрибутите, ползвани отвън.
  • При големи таблици — предпочитай JOIN пред влагане.