Skip to content

Instantly share code, notes, and snippets.

@ViktorLychkatyi
Created February 20, 2025 11:40
Show Gist options
  • Save ViktorLychkatyi/82cd563822475ab7b97f6456739173db to your computer and use it in GitHub Desktop.
Save ViktorLychkatyi/82cd563822475ab7b97f6456739173db to your computer and use it in GitHub Desktop.
Join
--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