--Наш запрос из предыдущего урока, который выводит все данные из таблицы newspaper, 
--к которой присоединяются данные таблицы online используя внешнее соединение LEFT JOIN
SELECT
	*
FROM
	magazine.newspaper AS n
LEFT JOIN
	magazine.online AS o
		ON n.id = o.id;

--Следующий запрос демонстрирует как работает внешнее соединение RIGHT JOIN
SELECT
	*
FROM
	magazine.newspaper AS n
RIGHT JOIN
	magazine.online AS o
		ON n.id = o.id;

--Следующий запрос с использованием RIGHT JOIN аналогичен первому запросу с использованием LEFT JOIN
-- с единственным отличием, что таблицы выводятся в разном порядке:
SELECT
	*
FROM
	magazine.online AS o
RIGHT JOIN
	magazine.newspaper AS n
		ON o.id = n.id;

-- Запрос, который объединяет в себе результаты LEFT JOIN + RIGHT JOIN, для этого используется тип соединения FULL JOIN
SELECT
	*
FROM
	magazine.newspaper AS n
FULL JOIN
	magazine.online AS o
		ON o.id = n.id
ORDER BY
	o.id;

--Результат FULL JOIN - это объединение результатов трех запросов ниже:

--клиентов, которые оформили подписку ТОЛЬКО на онлайн издание
SELECT
	*
FROM
	magazine.newspaper AS n
RIGHT JOIN
	magazine.online AS o
		ON o.id = n.id
WHERE
	n.id IS NULL;

--клиентов, которые оформили подписку ТОЛЬКО на печатное издание	
SELECT
	*
FROM
	magazine.newspaper AS n
LEFT JOIN
	magazine.online AS o
		ON o.id = n.id
WHERE
	o.id IS NULL;

--клиентов, которые оформили подписку на печатное и онлайн издание	
SELECT
	*
FROM
	magazine.newspaper AS n
INNER JOIN
	magazine.online AS o
		ON o.id = n.id;


-- запрос, который выводит объединённые результаты :
-- тех, кто оформили подписку ТОЛЬКО на печатное издание
-- И тех, кто оформили подписку ТОЛЬКО на онлайн издание
-- (то есть за исключением тех, кто оформил подписку на оба типа издания)
SELECT
	*
FROM
	magazine.newspaper AS n
FULL OUTER JOIN
	magazine.online AS o
		ON o.id = n.id
WHERE
	o.id IS NULL
	OR
	n.id IS NULL;
	

--PRIMARY - Первичный ключ
--FOREIGN - внешний ключ

--Запрос, который выводит все данные из таблицы classes схемы school
SELECT
	*
FROM
	school.classes;

--Запрос, который выводит все данные из таблицы students схемы school
SELECT
	*
FROM
	school.students;

--Запрос, объединяющий таблицы classes и таблицы students схемы school по ключам (PRIMARY и FOREIGN)
SELECT
	*
FROM
	school.classes AS c
INNER JOIN
	school.students AS s
		ON c.id = s.class_id;

	
	
