Created
February 20, 2025 11:40
-
-
Save ViktorLychkatyi/82cd563822475ab7b97f6456739173db to your computer and use it in GitHub Desktop.
Join
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--INNER JOINS | |
--1. Показать названия и категории товаров, поставщиками которых являются 000 “Паньки” или 000 «Какие люди» | |
--SELECT | |
--p.name AS Товар, | |
--c.name AS Категория, | |
--sr.name AS Поставщик | |
--FROM Product p | |
--JOIN Category c ON p.id_category = c.id | |
--JOIN Supplier sr ON p.id_supplier = sr.id | |
--WHERE sr.name IN ('Dairy World', 'Global Bakery') | |
--2. Выбрать все товары с указанием их поставщика, имя производителя которых не содержит букв [АКМ], и категория которых не "Крупы" | |
--SELECT | |
--p.name AS Товар, | |
--c.name AS Категория, | |
--pr.name AS Поставщик | |
--FROM Product p | |
--JOIN Category c ON p.id_category = c.id | |
--JOIN Producer pr ON p.id_producer = pr.id | |
--WHERE pr.name NOT LIKE '%Bimbo%' AND c.name NOT LIKE '%Крупы%' | |
--3. Показать названия и категории товаров с указанием поставщика и страны производителя. Условие: страна производителя не США, не Япония и не Италия, цена поставки менее 50 гривен, а дата поставки от 19.02.2025 и по сей день | |
--SELECT | |
--p.name AS Товар, | |
--c.name AS Категория, | |
--pr.name AS Поставщик, | |
--co.name AS Страна, | |
--d.price AS Цена, | |
--d.date_of_delivery AS [Дата поставки] | |
--FROM Product p | |
--JOIN Category c ON p.id_category = c.id | |
--JOIN Producer pr ON p.id_producer = pr.id | |
--JOIN Country co ON pr.id_address = co.id | |
--JOIN Delivery d ON d.id_product = d.id | |
--WHERE co.name NOT IN ('США', 'Япония', 'Италия') | |
--AND d.price >= 50 | |
--AND CAST(d.date_of_delivery AS DATE) BETWEEN '2025-02-10' AND CAST(GETDATE() AS DATE) | |
--4. Показать все кондитерские и безалкогольные товары, которых было продано более 100. Показать информацию о поставщике и производителе. | |
--SELECT | |
--p.name AS Товар, | |
--c.name AS Категория, | |
--s.quantity AS Продано, | |
--sr.name AS Поставщик, | |
--pr.name AS Производитель | |
--FROM Product p | |
--JOIN Category c ON p.id_category = c.id | |
--JOIN Sale s ON s.id_product = p.id | |
--JOIN Supplier sr ON p.id_supplier = sr.id | |
--JOIN Producer pr ON p.id_producer = pr.id | |
--WHERE s.quantity > 100 | |
--5. Сделать запрос на выборку информации о поставке товаров в следующем виде: название товара и его поставщика, категории, дата поставки и общую стоимость поставленных товаров. Условие: только трёх указанных в запросе поставщиков. Отсортировать названия товаров в алфавитном порядке. | |
--SELECT TOP 3 | |
--p.name AS Товар, | |
--c.name AS Категория, | |
--sr.name AS Поставщик, | |
--d.date_of_delivery AS [Дата поставки], | |
--d.price AS [Общая стоимость] | |
--FROM Product p | |
--JOIN Category c ON p.id_category = c.id | |
--JOIN Sale s ON s.id_product = p.id | |
--JOIN Delivery d ON p.id_delivery = d.id | |
--JOIN Supplier sr ON p.id_supplier = sr.id | |
--JOIN Producer pr ON p.id_producer = pr.id | |
--ORDER BY p.name | |
--6. Сделать запрос на выборку о продажах товаров в следующем виде: название товара и его производителя. | |
--Полный адрес (страна, город, улица) производителя в одной ячейке, категории, дате продажи и общей стоимости продажи. | |
--Условие: выведенная информация не должна касаться двух указанных в запросе производителей. | |
--Отсортировать общую стоимость продаж в порядке убывания | |
--SELECT | |
--p.name AS Товар, | |
--pr.name AS Производитель, | |
--CONCAT (co.name, ', ', ct.name, ', ', a.street) AS Адрес, | |
--c.name AS Категория, | |
--s.date_of_sale AS [Дата продажи], | |
--s.quantity * s.price AS [Общая стоимость] | |
--FROM Product p | |
--JOIN Category c ON p.id_category = c.id | |
--JOIN Producer pr ON p.id_producer = pr.id | |
--JOIN Delivery d ON p.id_delivery = d.id | |
--JOIN Address a ON pr.id_address = a.id | |
--JOIN City ct ON a.id_city = ct.id | |
--JOIN Region r ON ct.id_region = r.id | |
--JOIN Country co ON r.id_country = co.id | |
--JOIN Sale s ON s.id_product = p.id | |
--OUTER JOINS | |
--1. Показать названия товаров и их производителей, но и в том числе тех производителей, у которых нет товаров | |
--SELECT | |
--p.name AS Товар, | |
--pr.name AS Производитель | |
--FROM Product p FULL JOIN Producer pr ON p.id_producer = pr.id | |
--2. Показать только те категории, к которым не относится ни один товар | |
--SELECT | |
--p.name AS Товар, | |
--c.name AS Категория | |
--FROM Product p RIGHT JOIN Category c ON p.id_category = c.id | |
--WHERE p.id_category IS NULL | |
--3. Показать названия товаров, даты их поставки и поставщиков, в том числе тех поставщиков, которые ничего не успели поставить | |
--SELECT | |
--p.name AS Товар, | |
--d.date_of_delivery AS [Дата поставки], | |
--sr.name AS Поставщик | |
--FROM Product p | |
--LEFT JOIN Delivery d ON d.id_product = p.id | |
--LEFT JOIN Supplier sr ON d.id_supplier = sr.id | |
--4. Показать области (регионы), в которых нет ни одного производителя (ЕХСЕРТ) | |
--SELECT | |
--r.name AS Регион | |
--FROM Region r | |
--EXCEPT | |
--SELECT r.name | |
--FROM Region r | |
--JOIN Producer pr ON r.id_producer = pr.id | |
--5. Показать те названия категорий, где нет товаров фирмы 000 «Нли Ю» (ЕХСЕРТ) | |
--SELECT c.name AS Категория | |
--FROM Category c | |
--EXCEPT | |
--SELECT c.name | |
--FROM Category c | |
--JOIN Product p ON p.id_category = c.id WHERE p.name LIKE '%Нли Ю' | |
--6. Показать производителей, которые не выпускают продукты молочной категории (ЕХСЕРТ) | |
--SELECT pr.name AS Производители | |
--FROM Producer pr | |
--EXCEPT | |
--SELECT pr.name | |
--FROM Producer pr | |
--JOIN Product p ON p.id_producer = pr.id | |
--JOIN Category c ON p.id_category = c.id | |
--WHERE c.name LIKE '%молочн%' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment