Skip to content

Instantly share code, notes, and snippets.

@Cliv-create
Created March 1, 2025 15:31
Show Gist options
  • Save Cliv-create/db2eb6c7bd0962e0585031d1fc6a6ab4 to your computer and use it in GitHub Desktop.
Save Cliv-create/db2eb6c7bd0962e0585031d1fc6a6ab4 to your computer and use it in GitHub Desktop.
INNER JOIN, OUTER JOIN SQL quaries.
-- INNER JOINS
1. Показать названия и категории товаров, поставщиками которых являются ООО "Паньки" или ООО «Какие люди»
SELECT p.name, p.id_category
FROM Product AS p
JOIN Supplier AS s ON p.id_producer = s.id
JOIN Category AS c ON p.id_category = c.id
WHERE s.name IN ('ООО "Паньки"', 'Хлебзавод')
2. Выбрать все товары с указанием их поставщика,
имя производителя которых не содержит букв [АКМ],
и категория которых не "Крупы"
SELECT p.name, p.id_category, s.name
FROM Product AS p
JOIN Supplier AS s ON p.id_producer = s.id
JOIN Category AS c ON p.id_category = c.id
WHERE s.name NOT LIKE '%А%'
AND s.name NOT LIKE '%К%'
AND s.name NOT LIKE '%М%'
AND c.name NOT LIKE 'Крупы'
3. Показать названия и категории товаров с указанием поставщика и страны производителя.
Условие: страна производителя не Украина,
не Молдова и не Польша,
цена поставки менее 50 гривен,
а дата поставки от 10.02.2025 и по сей день
SELECT p.name, p.id_category, s.name, a.street, coun.name
FROM Product AS p
JOIN Delivery AS d ON d.id_product = p.id
JOIN Supplier AS s ON d.id_supplier = s.id
JOIN Address AS a ON a.id = s.id_address
JOIN City AS ci ON ci.id = a.id_city
JOIN Region AS r ON r.id = ci.id_region
JOIN Country AS coun ON coun.id = r.id_country
JOIN Category AS c ON p.id_category = c.id
WHERE coun.name NOT LIKE 'Украина'
AND coun.name NOT LIKE 'Молдова'
AND coun.name NOT LIKE 'Польша'
AND d.price < 50
AND d.date_of_delivery BETWEEN CONVERT(DATE, '2025-02-10', 23) AND GETDATE()
4. Показать все кондитерские и безалкогольные товары, которых было продано более 100.
Показать информацию о поставщике и производителе
SELECT p.name AS 'Товар', c.name AS 'Категория', s.name AS 'Поставщик', pr.name AS 'Производитель'
FROM Product AS p
JOIN Supplier AS s ON p.id_producer = s.id
JOIN Category AS c ON p.id_category = c.id
JOIN Producer AS pr ON p.id_producer = pr.id
WHERE p.quantity > 500
AND c.name LIKE 'Сладости'
OR c.name LIKE 'Напитки'
-- OUTER JOINS
1. Показать названия товаров и их производителей,
но и в том числе тех производителей, у которых нет товаров
SELECT p.name AS 'Товар', pr.name AS 'Производитель'
FROM Product AS p
RIGHT JOIN Producer AS pr ON p.id_producer = pr.id
2. Показать только те категории, к которым не относится ни один товар
SELECT c.name
FROM Category AS c
LEFT JOIN Product AS p ON p.id_category = c.id
WHERE p.id_category IS NULL
3. Показать названия товаров, даты их поставки и поставщиков,
в том числе тех поставщиков, которые ничего не успели поставить
SELECT p.name AS 'Товар', d.date_of_delivery AS 'Доставка', s.name AS 'Поставщик'
FROM Product AS p
JOIN Delivery AS d ON d.id_product = p.id
LEFT JOIN Supplier AS s ON p.id_producer = s.id
JOIN Category AS c ON p.id_category = c.id
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment