Subqueries
Підзапити (вкладені запити) – це запити, які використовуються в інструкціях SELECT, INSERT, UPDATE або DELETE.
SELECT FirstName, LastName as Name, BirthDate
FROM Person.Personas pc
JOIN HumanResources.Employeeas he
ON pc.BusinessEntityID = he.BusinessEntityID
WHERE BirthDate = (SELECT MIN(BirthDate) FROM HumanResources.Employee);
Підзапити (вкладені запити) – це запити, які використовуються в інструкціях SELECT, INSERT, UPDATE или DELETE.
SELECT ProductID, Name
FROM Product
WHERE Color NOT IN
(SELECT Color
FROM Product
WHERE ProductID = 5);
Related Subqueries
Підзапит є пов'язаним, якщо в ньому (у реченнях WHERE, HAVING) вказано стовпець таблиці зовнішнього запиту.
SELECT ord1.OrderDate
FROM Order ASord1
WHERE ord1.OrderDate =
(SELECT MIN(OrderDate)
FROM Order ASord2 WHERE ord2.CustomerID = ord1.CustomerID)
Rules
Вкладені запити можуть бути вказані в інструкціях: SELECT, INSERT, UPDATE або DELETE.
Кожен підзапит може містити один або більше підзапитів.
Пропозиція WHERE зовнішнього запиту має бути сумісна для з'єднання зі стовпцем у списку вибору вкладеного запиту.
Q&A
Дякую всім за заняття!🙌🏻
❗️🎓Тема уроку: 5. Вкладені запити
Нагадую, що дедлайн здачі домашніх робіт – до наступного уроку.
Якщо виникають складнощі, пишіть, допоможу із задоволенням 😌
Запис лекції тренер опублікує трохи пізніше 🖥
Не забудьте повторити матеріал та підготуватися до наступного уроку📚
Успіху і до зустрічі!🤩
Прості завдання:
Завдання 1: Список клієнтів та їх замовлень. Складіть SQL-запит, який виведе імена всіх клієнтів та ідентифікатори їхніх замовлень. Використовуйте таблиці Customers (з колонками CustomerID, FirstName, LastName) та Orders (з колонками OrderID, CustomerID).
Завдання 2: Товари та їх категорії. Напишіть SQL-запит, який покаже назви всіх товарів та назви категорій, до яких вони належать. Використовуйте таблиці Products (з колонками ProductID, ProductName, CategoryID) та Categories (з колонками CategoryID, CategoryName).
Завдання 3: Інформація про співробітників та їхні відділи. Складіть SQL-запит, щоб отримати імена всіх співробітників та назви відділів, в яких вони працюють. Використовуйте таблиці Employees (з колонками EmployeeID, FirstName, LastName, DepartmentID) та Departments (з колонками DepartmentID, DepartmentName).
Завдання середньої складності:
Завдання 4: Клієнти, які зробили замовлення. Напишіть SQL-запит, який виведе імена лише тих клієнтів, які мають хоча б одне замовлення. Використовуйте таблиці Customers та Orders (з попередніх завдань).
Завдання 5: Замовлення з інформацією про клієнта та товар. Складіть SQL-запит, щоб отримати ідентифікатор замовлення, ім'я клієнта, назву товару та кількість для кожного рядка в таблиці OrderDetails. Використовуйте таблиці Orders (з колонкою OrderID, CustomerID), Customers (з колонками CustomerID, FirstName, LastName), OrderDetails (з колонками OrderDetailID, OrderID, ProductID, Quantity), та Products (з колонками ProductID, ProductName).
Завдання 6: Співробітники та їхні керівники. Припустимо, у таблиці Employees є колонка ManagerID, яка вказує на ідентифікатор керівника співробітника (який також є співробітником). Напишіть SQL-запит, який виведе ім'я співробітника та ім'я його керівника. (Потрібен self-join).
Складніші завдання:
Завдання 7: Клієнти без замовлень. Напишіть SQL-запит, який виведе імена всіх клієнтів, які не мають жодного замовлення в таблиці Orders. Використовуйте таблиці Customers та Orders.
Завдання 8: Середня кількість товарів у замовленні для кожного клієнта. Складіть SQL-запит, щоб отримати ім'я кожного клієнта та середню кількість товарів у його замовленнях. Використовуйте таблиці Customers, Orders та OrderDetails. (Потрібне групування та агрегатні функції).
Завдання 9: Товари, які ніколи не були замовлені. Напишіть SQL-запит, який виведе назви всіх товарів, які не зустрічаються в таблиці OrderDetails. Використовуйте таблиці Products та OrderDetails.
Ці завдання допоможуть вам попрактикуватися з різними типами JOIN (INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN, SELF JOIN) та зрозуміти їхнє застосування у різних сценаріях. Бажаю успіху!