Архітектура ПК
[1]
Архітектура та експлуатація персонального комп'ютера
|
СПЗ
[12]
Системне програмне забезпечення та операційні системи
|
Комп'ютерна графіка [25] |
КСМ
[28]
Комп'ютерні системи та мережі
|
ІСІТО
[1]
Інформаційні системи і технології обліку
|
Бухгалтерський облік [0] |
АМтП
[10]
Алгоритмічні мови та програмування
|
Копирайт рерайт [1] |
СУБД
[18]
Системи управління базами даних
|
ОКТ практикум
[2]
Основи комп'ютерних технологій практикум
|
Інформатика (практ)
[1]
інформатика практикум, практичні заняття
|
ТіОБВ
[61]
Технологія і організація будівельного виробництва
|
ОСАПр
[6]
Основи систем автоматизованого проектування, AutoCAD, ArchiCAD
|
ТіОБВ (заочники) [1] |
15:53 SQL урок 9 Підзапити |
До цих пір ми отримували дані з бази даних за допомогою простих запитів і одного оператора SELECT. Однак, все ж, частіше нам потрібно буде вибирати дані, відповідні багатьом умовам, і тут не обійтися без розширених запитів. Для цього в SQL існують підзапити або вкладені вкладені запити, коли один оператор SELECT укладається в інший. 1. Фільтрація з допомогою підзапитівТаблиці баз даних, які використовуються в СУБД Access є реляційними таблицями, тобто усі таблиці можна зв'язати між собою за загальними полям. Допустимо у нас зберігаються дані в двох різних таблицях і нам потрібно вибрати дані в одній з них, залежно від того, які дані в іншій. Для цього створимо ще одну таблицю у нашій базі даних. Це буде, наприклад, таблиця Sellers з інформацією про постачальників: Тепер ми маємо дві таблиці - Sumproduct і Sellers, які мають однакове поле City. Припустимо, нам потрібно порахувати скільки товарів було продано тільки в Канаді. Зробити це нам допоможуть підзапити. Отже, спочатку напишемо запит для вибірки міст, які знаходяться в Канаді: SELECT City FROM Sellers WHERE Country = 'Canada' Тепер передамо ці дані в наступний запит, який буде вибирати дані з таблиці Sumproduct: SELECT SUM(Quantity) AS Qty_Canada FROM Sumproduct WHERE City IN ('Montreal','Toronto') Також ми можемо об'єднати ці два запити в один. Таким чином, один запит, який виводить дані буде головним, а другий запит, которий передає вхідні дані, буде допоміжним (підзапитом). Для вкладення підзапиту використовуємо конструкцію WHERE ... IN (...), про яку говорилося в розділі Розширене фільтрування: SELECT SUM(Quantity) AS Qty_Canada FROM Sumproduct WHERE City IN (SELECT City FROM Sellers WHERE Country = 'Canada') Бачимо, що ми отримали аналогічні дані, як і за допомогою двох окремих запитів. Таким же чином, ми можемо збільшувати глибину вкладеності запитів, вкладаючи підзапити скільки завгодно разів. 2. Використання підзапитів в якості розрахункових полівМи також можемо використовувати вкладені запити в якості розрахункових полів. Відобразимо, наприклад, кількість реалізованої продукції за кожним продавцеві за допомогою наступного запиту: SELECT Seller_name, (SELECT SUM(Quantity) FROM Sumproduct WHERE Sellers.City = Sumproduct.City) AS Qty FROM Sellers Перший оператор SELECT відображає два стовпці - Seller_name і Qty. Поле Qty є розрахунковим, воно формується в результаті виконання підзапиту, який взятий в круглі дужки. Цей подзапрос виконується по одному разу для кожного запису в полі Seller_name і в загальному буде виконаний чотири рази, оскільки вибрано імена чотирьох продавців. Також у підзапиті, конструкція WHERE виконує функцію об'єднання, оскільки за допомогою WHERE ми з'єднали дві таблиці по полю City, використавши повні назви стовпців (Табліця.Поле). |
|
Всього коментарів: 0 | |