Підзапит у записах однієї таблиці:
Створіть таблицю з назвою 'тварини' в даних бази даних.'Додайте наступний запис різних тварин з різними властивостями, як показано. Отримайте цей запис, використовуючи запит SELECT, наступним чином:
>> ВИБЕРІТЬ * ВІД даних.тварини;
Приклад 01:
Давайте отримаємо обмежені записи цієї таблиці за допомогою підзапитів. Використовуючи наведений нижче запит, ми знаємо, що підзапит буде виконаний першим, а його вихідні дані будуть використані в основному запиті як вхідні дані. Підзапит просто визначає вік, коли ціна тварини становить 2500. Вік тварини, ціна якої 2500, становить 4 у таблиці. Основним запитом будуть обрані всі записи таблиці, де вік перевищує 4 роки, і вихідні дані наведені нижче.
>> ВИБЕРІТЬ * ВІД даних.тварини ДЕ Вік> (ВИБІР Вік ВІД даних.тварини ДЕ Ціна = '2500');
Приклад 02:
Давайте використовувати одну і ту ж таблицю в різних ситуаціях. У цьому прикладі ми будемо використовувати якусь функцію замість речення WHERE у підзапиті. Ми брали середнє значення всіх цін, даних на тварин. Середня ціна складе 3189. Основним запитом будуть обрані всі записи тварин, ціна яких перевищує 3189. Ви отримаєте нижченаведений результат.
>> ВИБЕРІТЬ * ВІД даних.тварини ДЕ Ціна> (ВИБЕРІТЬ СРЕДНЮ (ціну) З даних.тварини);
Приклад 03:
Давайте використаємо речення IN у головному запиті SELECT. Перш за все, підзапит отримає ціни, що перевищують 2500. Після цього основним запитом будуть обрані всі записи таблиці «тварини», де ціна лежить у результаті підзапиту.
>> ВИБЕРІТЬ * ВІД даних.тварини ДЕ Ціна в (ВИБЕРИТИ ЦІНУ З даних.тварини ДЕ Ціна> 2500);
Приклад 04:
Ми використовуємо підзапит, щоб отримати ім’я тварини, ціна якої 7000. Оскільки ця тварина є коровою, тому назва "корова" буде повернута до основного запиту. У основному запиті всі записи будуть отримані з таблиці, де ім’я тварини - «корова»."Оскільки ми маємо лише два записи щодо" корови тварин ", ось чому ми маємо нижченаведені результати.
>> ВИБЕРІТЬ * ВІД даних.тварини ДЕ Ім'я = (ВБЕРІТИ ІМЯ З ДАНИХ.тварини ДЕ Ціна = '7000');
Підзапит у записах декількох таблиць:
Припустімо наведені нижче дві таблиці "студент" та "викладач" у вашій базі даних. Давайте спробуємо кілька прикладів підзапитів з використанням цих двох таблиць.
>> ВИБЕРІТЬ * ВІД даних.студент;>> ВИБЕРІТЬ * ВІД даних.вчитель;
Приклад 01:
Ми отримаємо дані з однієї таблиці за допомогою підзапиту та використаємо їх як вхідні дані для основного запиту. Це означає, що ці дві таблиці можуть якимось чином співвідноситися. У наведеному нижче прикладі ми використовували підзапит, щоб отримати ім’я учня з таблиці „студент”, де ім’я вчителя „Саміна”.'Цей запит поверне' Samina 'до основної таблиці запитів' вчителя.'Потім у головному запиті будуть обрані всі записи, що стосуються імені вчителя' Саміна.'Оскільки у нас є два записи для цього імені, тому ми отримали такий результат.
>> ВИБЕРІТЬ * ВІД даних.викладач WHERE TeachName = (ВИБЕРИТЬ TeachName ІЗ даних.студент WHERE TeachName = 'Саміна');
Приклад 02:
Щоб розробити підзапит у випадку різних таблиць, спробуйте цей приклад. У нас є підзапит, який отримує ім’я вчителя від студента таблиці. Ім'я повинно мати "i" у будь-якій позиції його значення. Це означає, що всі імена у стовпці TeachName, що мають у своєму значенні "i", будуть вибрані та повернуті до основного запиту. Основний запит вибере всі записи з таблиці 'вчитель', де ім'я вчителя є у вихідних даних, що повертаються підзапитом. Оскільки підзапит повернув 4 імена вчителів, саме тому ми будемо мати запис усіх цих імен, що перебувають у таблиці 'вчитель.'
>> ВИБЕРІТЬ * ВІД даних.викладач, ДЕ TeachName IN (ВИБЕРІТЬ TeachName ІЗ даних.студент, ДЕ Ім'я викладача, як "% i%");
Приклад 03:
Розглянемо наведені нижче дві таблиці, 'order' і 'order1'.
>> ВИБЕРІТЬ * ВІД даних.порядок;>> ВИБЕРІТЬ * ВІД даних.замовлення1;
Давайте спробуємо будь-яке речення в цьому прикладі для розробки підзапиту. Підзапит вибере "id" із таблиці "order1", де стовпець "Status" має значення "Unpaid".'Ідентифікатор' може бути більше 1. Це означає, що для отримання результатів таблиці "замовлення" до основного запиту буде повернуто більше 1 значення. У цьому випадку можна використовувати будь-який "ідентифікатор". Ми отримали наведені нижче результати для цього запиту.
>> ВИБЕРІТЬ товар, продаж, ідентифікатор ВІД даних.замовити WHERE id = БУДЬ-ЯКИЙ (ВИБЕРИТИ id з даних.order1 WHERE Status = 'Unpaid');
Приклад 04:
Припустимо, що у вас є наведені нижче дані в таблиці 'order1' перед застосуванням будь-якого запиту.
>> ВИБЕРІТЬ * ВІД даних.замовлення1;
Давайте застосуємо запит усередині запиту, щоб видалити деякі записи з таблиці 'order1'. По-перше, підзапит вибере значення «Статус» із таблиці «порядок», де Елемент - «Книга».'Підзапит повертає значення "Оплачено" як значення. Тепер основний запит видалить рядки з таблиці 'order1', де значенням стовпця 'Status' є 'Paid.'
>> ВИДАЛИТИ З даних.order1 WHERE Status = (ВИБЕРІТЬ статус FROM дані.замовлення WHERE Пункт = 'Книга');
Після перевірки ми маємо, що нижче наведені нижче записи залишились у таблиці 'order1' після виконання запиту.
>> ВИБЕРІТЬ * ВІД даних.замовлення1;
Висновок:
У всіх вищезазначених прикладах ви ефективно працювали з великою кількістю підзапитів. Ми сподіваємось, зараз все зрозуміло і чисто.