JOIN нескольких таблиц | Практика по SQL
Ғылым және технология
Пример объединения 3 таблиц в SQL. Страница курса - www.asozykin.ru/courses/sql
Поддержать курс можно через сервис Cloudtips - pay.cloudtips.ru/p/45a4055b
Заранее спасибо за помощь!
VK - avsozykin
telegram - t.me/a_sozykin
Мой сайт - www.asozykin.ru
Тренажер SQL Academy - sql-academy.org/ru/trainer
Задача 14. В какие города летал Брюс Уиллис - sql-academy.org/ru/trainer/ta...
00:00 - Описание задачи
00:47 - Схема базы данных
02:14 - Исследование данных
07:06 - Составление SQL запроса с JOIN трех таблиц
09:40 - Объединяем 4 таблицы
Мой канал с краткими и понятными объяснениями сложных тем в ИТ и компьютерных науках - / andreysozykincs
Пікірлер: 41
Андрей, спасибо огромное Вам! Благодаря Вашему курсу по информационным технологиям, протоколам, TLS, DNS,HTTPS и т.д. я подготовился и прошёл очень сложное собеседование! Желаю развития вашему каналу и больше подписчиков!
Андрей спасибо за вашу работу, всё всегда понятно и содержательно!
Спасибо, с каждым уроком все интереснее и интереснее.
Отличный урок, спасибо большое!
Спасибо все очень понятно. И в sql academy я думаю по началу очень удобно обучаться так как есть подсказки.
Отличное объяснение. Если медленно, можете ставить x1,5. Спасибо огромное!
Спасибо большое за данный видео урок, очень помогает в обучении! Понял свои ошибки в коде при объединении 3 таблиц, после просмотра ролика смог все исправить, и теперь все отлично работает. Как говорится век живи век учись!)
@AndreySozykin
5 ай бұрын
Пожалуйста! Рад, что видео полезно!
Благодарю!
спасибо, было интересно. #sql
Спасибо! Прям все просится, имея несколько таблиц, автоматизировать)
@AndreySozykin
2 жыл бұрын
Обязательно!
Спасибо вам большое. Заснул за 2 минуты. Помогли.
Браво!
@AndreySozykin
2 жыл бұрын
Спасибо!
@yandoru
2 жыл бұрын
@@AndreySozykin в ВК в личку написал про ошибки.
Подскажите, а вот такого типа визуальные редакторы какие есть? СУБД. И к sqlite такое можно подключить?
Как будет выполняться INNER JOIN если в столце, по которому происходит обединение есть неуникальные значения (т.е. они повторяются)?
Привет. А если я хочу сделать запись в таблицу со связями. Мне нужно создавать INSERT INTO и JOIN тоже? Как правильно создать запрос, чтобы в 3 таблицу подтянуло данные с 2 остальных ?
Добрый день, спасибо за видео, только есть один вопрос. Есть таблица с данными пользователей назовем ее a.users в ней есть id пользователей и она сопоставима с второй таблицей к примеру a.user_spots в данной таблице у наc есть два блока user_id и spots_id. и есть третья таблица a.spots в ней у нас есть собственно блок spots_id что сопоставим с таблицей a.user_spots. Цель сопоставить три таблицы с выводом id юзера и присвоенной ему площадки? Просто я не совсем понимаю как мне сделать запрос на одну таблицу и по факту вообще кажется что так не работает. Буду признателен если подскажите или направите в нужном ключе.
Спасибо за урок. Все понятно, кроме одного: в теории Вы учили ставить название таблицы.столбец (т.е. Select Trip.Town_to), а в данном примере не уточняете столбец (Select Town_to). У меня были успешны оба варианта в итоге. Это потому, что данный столбец с уникальным названием?
@AndreySozykin
2 жыл бұрын
Да, именно так. Название таблицы обязательно, если столбец с одинаковым именем есть в двух таблицах. В противном случае SQL и без названия таблицы сможет понять, откуда взять столбец.
Андрей спасибо за очень полезную тему с join нескольких таблиц! Можно спросить совета по своему вопросу? у меня есть три таблицы, первая сообщения пользователей с полями в том числе fk юзера, вторая id сообщения и userid кто поставил лайк этому сообщению, третья id сообщения и userid кто поставил дизлайк этому сообщению. Я делаю запрос в hibernate чтобы мне вывел все сообщения, количество лайков каждому сообщению и количество дизлайков. На sql это будет так: select m.id as message, count(ml.liked_users_id), count(md.disliked_users_id) from message as m left join message_likes as ml on (m.id=ml.message_id) left join message_dislikes as md on (m.id=md.message_id) group by m.id; Этот запрос мне дает три колонки как я просил НО количество дизлайков он считает таким же как и лайков с соседнего столбца!! то есть 3 лайка у сообщения и 3 диза, хотя в реальности дизлайка только 1! Если делать запросы отдельно все работает корректно, но мне необходим один запрос т.к. он заполняет dto обьект в spring boot. Я просто полумал есть ли у вас похожая наработка или просто что-нибудь посоветуете? с меня донат даже без ответа)) офигенный формат! это намного эффективнее чем просто лекция, да и быстрее наверное(слайды не надо готовить:))
@AndreySozykin
2 жыл бұрын
Что происходит, когда дизлайков больше, чем лайков? Мне кажется, что на первом этапе таблица Messages объединяется с таблицей Message_likes, количество строк будет столько, сколько лайков. А на следующем этапе таблица Message_dislikes объединяется с составной таблицей с первого этапа, где столько строк, сколько лайков. К каждой строке с лайком добавляется столбец с дизлайком. Поэтому count выдает одинаковое количество строк.
@evgenykuznetsov7490
2 жыл бұрын
@@AndreySozykin дело в том что когда есть только дизлайки (лайков еще ноль) то считается правильное количество, но как только ставится лайк количество уравнивается) это очень странно, но думаю вы правильно описали причину, проблема что я не понимаю как обьединить таблицы по другому, пробовал но выдает неправильные цифры, может как то использовать вложенный запрос типа для дизлайков (select md.id, count(md.dislikes) from md group by md.id) а затем уже обьединять?
Почему в полной записи вы идете обраным ходом от Трип к Имени?
На практике, в реальной, масштабной базе разве допустимо использовать такое обилие соединений? Сделал четвёртый join и дождался результата через несколько дней? Такое объединение по синтаксису допустимо, но с точки зрения производительности как лучше написать? Подскажите, пожалуйста
@AndreySozykin
Жыл бұрын
Производительность - это сложный вопрос, она определяется отдельно для каждого запроса. В общем виде сложно дать рекомендации. На практике объединение данных из трех или четырех таблиц вполне может работать быстро, но придется оптимизировать запрос.
@user-lx7mv4xc4f
Жыл бұрын
Спасибо за ответ! Правда моё любопытство не удовлетворено☺
Аа привет Андрей, а что у вас с голосом?
@AndreySozykin
2 жыл бұрын
С голосом, насколько могу судить, все хорошо. Что не так?
А правильно ли направлены стрелки в схеме связей таблиц?
@emilusm1903
8 ай бұрын
это не стрелки, а как бы ветви "от одного ко многим". Тоже поначалу думал что это стрелки
@DenisSvistoplasov
8 ай бұрын
@@emilusm1903 Как бы то ни было, если считается, что у связи *ветвистый* конец указывает на "многих", то "многими" здесь являются поля id в таблице Trip и таблице Passenger. А если считается, что у связи *прямой* конец указывает на "многих", то "многими" здесь являются поля id в таблице Company. А id - уникальны. При любой интерпретации направления связей: в данной схеме есть противоречие.
Что делать если в БД в разных таблицах "Passenger" и "Company" два одинаковых имени "name" Как их объединить, чтобы name из двух таблиц подтягивались? Если через JOIN добавлять таблицу Passenger , то подтягиваются имена пассажиров А если не добавлять таблицу, то подтягиваются названия компаний Как объединить name из двух разных таблиц?
@roflostrike-csgofunnymomen1355
10 ай бұрын
AS
На слабенькую троечку. Было бы несколько рейсов было бы десяток Парижев и Владивостоков. Где distinct?
@Edgar-pu1lc
8 ай бұрын
Не душни
Не чего понять не возможно, проще дописать в таблицу, чем создавать такую путаницу