Sql підзапити
Підзапити, внутрішні чи вкладені запити - є не що інше, як запит з запитом. Зазвичай, підзапит використовується в конструкції WHERE. І, в більшості випадків, підзапит використовується, коли ви можете отримати значення за допомогою запиту, але не знаєте конкретного результату.
Підзапити є альтернативним шляхом отримання даних з безлічі таблиць.
Поряд з операторами порівняння такими, як =, <,>,> =, <= и др. Вы можете использовать подзапросы с перечисленными ниже конструкциями:
приклади підзапитів
1) Як правило, підзапит повертає тільки один запис, але трапляється і так, що записів може бути багато, тоді в умові WHERE використовуються такі оператори, як IN, NOT IN. Запит може виглядати наступний чином:
Тоді результат буде приблизно таким:
2) Давайте розглянемо використовувану раніше таблицю student_details. Якщо Ви знаєте імена студентів, які вивчають природознавство (science), то можете отримати їх id, використовуючи наведений нижче запит
але, якщо Ви не знаєте їхніх імен, то для отримання id Вам необхідно написати запит, описаним нижче способом:
В описаному вище запиті, спочатку виконується внутрішній запит, потім зовнішній
3) Ви можете використовувати підзапит з оператором INSERT для додавання даних з однієї таблиці в іншу. Давайте спробуємо згрупувати всіх студентів, які вивчають математику в таблицю math_group
4) підзапитів може використовуватися з оператором SELECT, як описано нижче. Давайте використаємо таблиці product і order_items, об'єднавши їх між собою
співвіднесений підзапит
Запит називається співвіднесені, коли обидва, і внутрішній, і зовнішній, запити взаємозалежні. Це означає, що для обробки кожного запису внутрішнього запиту, повинна бути отримана також запис зовнішнього запиту, тобто внутрішній запит цілком залежить від зовнішнього.
1) Ви можете використовувати стільки вкладених запитів, скільки захочете, але в Oracle не рекомендується використовувати більше 16 вкладень.
2) Якщо підзапит не залежить від зовнішнього запиту - він називається несоотнесенность підзапитом