SQL JOIN. LEFT JOIN. Что такое связь многие ко многому и один ко многому

preview_player
Показать описание
JOIN используют для склейки таблиц, SQL построен на необходимости собирать данные в тот вид который требуется, по этому JOIN 100% нужен для собеседования и для работы на любой позиции где приходится работать с базами данных.

JOIN бывет четырех видов:
INNER JOIN, LEFT JOIN, RIGHT JOIN и OUTER JOIN. В этом видео мы рассмотрим первые 2, и рассмотрим теорию по всем остальным.

Также в этом виде рассмотрены такие виды связей в SQL как:
связь один к одному, один ко многим и многие ко многим.

Понимание связей это фундамент для построенния правильной схемы SQL базы данных и для правильного чтения струкутры таблиц.

В видео рассмотрен такой вопрос как чем отличается ON от WHERE
ON vs WHERE in SQL

Отнеситесь серьезно к домашнему заданию, жду комментов под видео

---- Соц сети
Телеграм, где можно узнать о новых видео и получать доп контент
P.S. В youtube я отвечаю быстрее чем в telegram, буду рад комментам в youtube

----
Чтобы поддержать канал
1) Можно поставить лайк (или дизлайк, если не понравилось видео)
2) Оставить комментарий более 5 слов (можно решенное ДЗ)
3) Досмотреть видео до конца (так удержание будет выше и мне это поможет в продвижении)
4) Оставить отзыв в комментариях, что можно улучшить в видео, чтобы не хотелось его закрывать

#sql #grommax

Материально поддержать канал можно следующим способом
2) Пройти опрос, чтобы помочь выбрать подходящие варианты поддержки

Оглавление
00:00 - Введение
00:20 - Решение ДЗ
04:53 - Зачем нужен JOIN в SQL
05:25 - Диаграмма Вена
05:56 - INNER JOIN
06:04 - LEFT JOIN/RIGHT JOIN
06:24 - OUTER JOIN
06:42 - Практика с JOIN в SQL
09:16 - Виды связей в SQL
09:50 - Связь один к одному в SQL
10:25 - Связь один ко многому в SQL
10:58 - Связь многих ко многому в SQL
12:35 - Отличие INNER JOIN и LEFT JOIN
14:50 - Отличие INNER JOIN и LEFT JOIN
Рекомендации по теме
Комментарии
Автор

ДЗ 📖:
1) Получить список продуктов с категориями и поставщиками
2) Отсортировать по поставщику полученную выборку, чтобы узнать в какие категории добавлялся продукт для какого поставщика
3) Оставить имя поставщика и имя категории, и получили уникальный набор информации по категориям
4) Отсортировать по поставщику и по категории полученный результат

ВНИМАНИЕ!!! ДЗ можно прикрепить под моим комментом или с дополнительным текстом, а не только лишь запросами. Youtube удаляет чисто запросы без текста и не дает мне возможности разрешить их к публикации. Если будут проблемы, то пишите, будем думать как обходить блокировки youtube

grommaks
Автор

SELECT ProductName, CategoryName, SupplierName FROM Products P
JOIN Suppliers S ON P.SupplierID=S.SupplierID
JOIN Categories C ON P.CategoryID=C.CategoryID
ORDER BY SupplierName, CategoryName
Туговато уже))) первое задание наверное легко выполнять с несколькими мониторами, чтобы можно было зайти в таблицы и видеть что клеишь)
Спасибо за урок #SQL #Join #МаксимГром

rostikoffchannel
Автор

Привет, спасибо за урок

SELECT DISTINCT S.SupplierName, C.CategoryName FROM Products P
join Categories C on C.CategoryID = P.CategoryID
join Suppliers S on S.SupplierID = P.SupplierID
ORDER BY S.SupplierName, C.CategoryName

ТарасЖурба-лу
Автор

Недооценённые видео. Жаль, что так мало просмотров. Среди океанов фекалий найти годные обучающие видосы сложно. А тут есть нормальные, и мало людей знает о нём

ArtyomManokhin
Автор

Я знаю как должен выглядеть json. Но склеить пока не удаётся( Пробовал разобраться на этом примере сперва с sql потом с typeorm Relations для вывода api. Понять немного не могу если один posts но много shares, likes, comments, images то это связь один ко многому. Если posts может опубликовать один users один к одному. shares, likes, comments, images относятся как к posts так и к users то это многих ко многому. JSON_ARRAYAGG, JSON_OBJECTAGG Я запутался надо ещё 2 раза пересмотреть

users
id
firstname
lastname
avatar

shares
id
post_id
user_id

likes
id
post_id
user_id

comments
id
post_id
user_id

images
id
post_id
user_id

posts
id
user_id
title
description
created_at

diatm
Автор

В тренажере скомандой Join выходит ошибка((

sergeysandul
Автор

Все прекрасно, но иенно на этом уроке я поплыл с ДЗ. Можно ли правильный ответ для каждого этапа на JOIN'ах прикрепить - спасибо

Aleksey_Pravdin
Автор

Спасибо за видео!))
Сперва сделала вложенным SELECT, но подсмотрела в комментариях и разобралась, как красивее:))

Мой вариант:
SELECT DISTINCT SupplierName, CategoryName FROM (SELECT * FROM Products P
JOIN Categories C ON C.CategoryID = P.CategoryID
JOIN Suppliers S ON S.SupplierID = P.SupplierID
ORDER BY SupplierID)
ORDER BY SupplierName, CategoryID

АлинаАртюшкина-тч
Автор

У меня 2 вопроса.
1)Если честно, я так и не понял чем отличается ON от Where и в каких сулчаях применять одно или другое. МОжно чуть подробнее пожалуйста?

2) Как применить условие выбора строк, если мне нужно например, чтобы мне в таблице вывело только "Chef Anton's Cajun Seasoning". Это из Таблицы Products, Столбец ProductName. Как мы видим здесь имеется апостроф ' и к примеру запрос:
SELECT * from Products
WHERE ProductName = 'Chef Anton's Cajun Seasoning' не приводит к результату.
Да я понимаю, можно использовать LIKE, что к примеру будет предлставлять из себя:

SELECT * from Products
WHERE ProductName LIKE '%Cajun Seasoning' - тут запрос сработает. А в целом как еще можно это решить, если мне к примеру нужно полностью название, без % и _

Void-wsjz
Автор

Привет! Спасибо за урок!
Вот ДЗ:

SELECT P.ProductID, P.ProductName, C.CategoryName, S.SupplierName FROM Products P
JOIN Categories C ON C.CategoryID = P.CategoryID
JOIN Suppliers S ON S.SupplierID = P.SupplierID
ORDER BY S.SupplierID, C.CategoryID

АртемБалановский-гф
Автор

И вот подскажите пожалуйста, как 1ый запрос будет отличаться от 2го.
1)SELECT * FROM Products P
JOIN Categories CA ON P.CategoryID = CA.CategoryID
JOIN Suppliers SU ON P.SupplierID = SU.SupplierID
where ProductName LIKE '%Cajun Seasoning'

и

2)SELECT * FROM Products P
JOIN Categories CA ON P.CategoryID = CA.CategoryID AND ProductName LIKE '%Cajun Seasoning'
JOIN Suppliers SU ON P.SupplierID = SU.SupplierID

Void-wsjz
Автор

ДЗ!
Я надеюсь все правильно понял,
хоть конечно есть сомнения в 4ом задании в плане сортировки по ID или по Name Столбцу

1) и 2) SELECT * FROM Products P
JOIN Categories CA ON P.CategoryID = CA.CategoryID
JOIN Suppliers SU ON P.SupplierID = SU.SupplierID
Order by SupplierName

3) SELECT SU.SupplierName, CA.CategoryName FROM Products P
JOIN Categories CA ON P.CategoryID = CA.CategoryID
JOIN Suppliers SU ON P.SupplierID = SU.SupplierID
Order by SupplierName

4) SELECT SU.SupplierName, CA.CategoryName FROM Products P
JOIN Categories CA ON P.CategoryID = CA.CategoryID
JOIN Suppliers SU ON P.SupplierID = SU.SupplierID
Order by SupplierName, CategoryName

Void-wsjz
Автор

Благодарю за Ваши труды.
SELECT DISTINCT SupplierName, CategoryName FROM Products P
JOIN Categories C ON C.CategoryID = P.CategoryID
JOIN Suppliers S ON S.SupplierID = P.SupplierID
ORDER BY SupplierName, CategoryName

tima