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

  • @klochkovov3909
    @klochkovov39092 жыл бұрын

    Андрей, спасибо огромное Вам! Благодаря Вашему курсу по информационным технологиям, протоколам, TLS, DNS,HTTPS и т.д. я подготовился и прошёл очень сложное собеседование! Желаю развития вашему каналу и больше подписчиков!

  • @user-zk9ur6tr1e
    @user-zk9ur6tr1e2 жыл бұрын

    Андрей спасибо за вашу работу, всё всегда понятно и содержательно!

  • @user-dw7gb5gd1g
    @user-dw7gb5gd1g2 жыл бұрын

    Спасибо, с каждым уроком все интереснее и интереснее.

  • @nephritemontague2872
    @nephritemontague2872 Жыл бұрын

    Отличный урок, спасибо большое!

  • @user-io6ml6px5w
    @user-io6ml6px5w2 ай бұрын

    Спасибо все очень понятно. И в sql academy я думаю по началу очень удобно обучаться так как есть подсказки.

  • @la138
    @la138 Жыл бұрын

    Отличное объяснение. Если медленно, можете ставить x1,5. Спасибо огромное!

  • @gucha7923
    @gucha79235 ай бұрын

    Спасибо большое за данный видео урок, очень помогает в обучении! Понял свои ошибки в коде при объединении 3 таблиц, после просмотра ролика смог все исправить, и теперь все отлично работает. Как говорится век живи век учись!)

  • @AndreySozykin

    @AndreySozykin

    5 ай бұрын

    Пожалуйста! Рад, что видео полезно!

  • @user-de7vk7gm7b
    @user-de7vk7gm7b2 жыл бұрын

    Благодарю!

  • @user-gb3zz3xx3p
    @user-gb3zz3xx3p2 жыл бұрын

    спасибо, было интересно. #sql

  • @dims9998
    @dims99982 жыл бұрын

    Спасибо! Прям все просится, имея несколько таблиц, автоматизировать)

  • @AndreySozykin

    @AndreySozykin

    2 жыл бұрын

    Обязательно!

  • @MirDiVich
    @MirDiVich2 жыл бұрын

    Спасибо вам большое. Заснул за 2 минуты. Помогли.

  • @yandoru
    @yandoru2 жыл бұрын

    Браво!

  • @AndreySozykin

    @AndreySozykin

    2 жыл бұрын

    Спасибо!

  • @yandoru

    @yandoru

    2 жыл бұрын

    @@AndreySozykin в ВК в личку написал про ошибки.

  • @sumburno
    @sumburno9 ай бұрын

    Подскажите, а вот такого типа визуальные редакторы какие есть? СУБД. И к sqlite такое можно подключить?

  • @simexlab
    @simexlab Жыл бұрын

    Как будет выполняться INNER JOIN если в столце, по которому происходит обединение есть неуникальные значения (т.е. они повторяются)?

  • @solong4347
    @solong4347 Жыл бұрын

    Привет. А если я хочу сделать запись в таблицу со связями. Мне нужно создавать INSERT INTO и JOIN тоже? Как правильно создать запрос, чтобы в 3 таблицу подтянуло данные с 2 остальных ?

  • @TheStoorey
    @TheStoorey Жыл бұрын

    Добрый день, спасибо за видео, только есть один вопрос. Есть таблица с данными пользователей назовем ее a.users в ней есть id пользователей и она сопоставима с второй таблицей к примеру a.user_spots в данной таблице у наc есть два блока user_id и spots_id. и есть третья таблица a.spots в ней у нас есть собственно блок spots_id что сопоставим с таблицей a.user_spots. Цель сопоставить три таблицы с выводом id юзера и присвоенной ему площадки? Просто я не совсем понимаю как мне сделать запрос на одну таблицу и по факту вообще кажется что так не работает. Буду признателен если подскажите или направите в нужном ключе.

  • @user-hh5rv1uo3z
    @user-hh5rv1uo3z2 жыл бұрын

    Спасибо за урок. Все понятно, кроме одного: в теории Вы учили ставить название таблицы.столбец (т.е. Select Trip.Town_to), а в данном примере не уточняете столбец (Select Town_to). У меня были успешны оба варианта в итоге. Это потому, что данный столбец с уникальным названием?

  • @AndreySozykin

    @AndreySozykin

    2 жыл бұрын

    Да, именно так. Название таблицы обязательно, если столбец с одинаковым именем есть в двух таблицах. В противном случае SQL и без названия таблицы сможет понять, откуда взять столбец.

  • @evgenykuznetsov7490
    @evgenykuznetsov74902 жыл бұрын

    Андрей спасибо за очень полезную тему с 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

    @AndreySozykin

    2 жыл бұрын

    Что происходит, когда дизлайков больше, чем лайков? Мне кажется, что на первом этапе таблица Messages объединяется с таблицей Message_likes, количество строк будет столько, сколько лайков. А на следующем этапе таблица Message_dislikes объединяется с составной таблицей с первого этапа, где столько строк, сколько лайков. К каждой строке с лайком добавляется столбец с дизлайком. Поэтому count выдает одинаковое количество строк.

  • @evgenykuznetsov7490

    @evgenykuznetsov7490

    2 жыл бұрын

    @@AndreySozykin дело в том что когда есть только дизлайки (лайков еще ноль) то считается правильное количество, но как только ставится лайк количество уравнивается) это очень странно, но думаю вы правильно описали причину, проблема что я не понимаю как обьединить таблицы по другому, пробовал но выдает неправильные цифры, может как то использовать вложенный запрос типа для дизлайков (select md.id, count(md.dislikes) from md group by md.id) а затем уже обьединять?

  • @kuli4eg
    @kuli4eg Жыл бұрын

    Почему в полной записи вы идете обраным ходом от Трип к Имени?

  • @user-lx7mv4xc4f
    @user-lx7mv4xc4f Жыл бұрын

    На практике, в реальной, масштабной базе разве допустимо использовать такое обилие соединений? Сделал четвёртый join и дождался результата через несколько дней? Такое объединение по синтаксису допустимо, но с точки зрения производительности как лучше написать? Подскажите, пожалуйста

  • @AndreySozykin

    @AndreySozykin

    Жыл бұрын

    Производительность - это сложный вопрос, она определяется отдельно для каждого запроса. В общем виде сложно дать рекомендации. На практике объединение данных из трех или четырех таблиц вполне может работать быстро, но придется оптимизировать запрос.

  • @user-lx7mv4xc4f

    @user-lx7mv4xc4f

    Жыл бұрын

    Спасибо за ответ! Правда моё любопытство не удовлетворено☺

  • @ericmccormick731
    @ericmccormick7312 жыл бұрын

    Аа привет Андрей, а что у вас с голосом?

  • @AndreySozykin

    @AndreySozykin

    2 жыл бұрын

    С голосом, насколько могу судить, все хорошо. Что не так?

  • @DenisSvistoplasov
    @DenisSvistoplasov10 ай бұрын

    А правильно ли направлены стрелки в схеме связей таблиц?

  • @emilusm1903

    @emilusm1903

    8 ай бұрын

    это не стрелки, а как бы ветви "от одного ко многим". Тоже поначалу думал что это стрелки

  • @DenisSvistoplasov

    @DenisSvistoplasov

    8 ай бұрын

    @@emilusm1903 Как бы то ни было, если считается, что у связи *ветвистый* конец указывает на "многих", то "многими" здесь являются поля id в таблице Trip и таблице Passenger. А если считается, что у связи *прямой* конец указывает на "многих", то "многими" здесь являются поля id в таблице Company. А id - уникальны. При любой интерпретации направления связей: в данной схеме есть противоречие.

  • @user-yc5dj6wv3e
    @user-yc5dj6wv3e Жыл бұрын

    Что делать если в БД в разных таблицах "Passenger" и "Company" два одинаковых имени "name" Как их объединить, чтобы name из двух таблиц подтягивались? Если через JOIN добавлять таблицу Passenger , то подтягиваются имена пассажиров А если не добавлять таблицу, то подтягиваются названия компаний Как объединить name из двух разных таблиц?

  • @roflostrike-csgofunnymomen1355

    @roflostrike-csgofunnymomen1355

    10 ай бұрын

    AS

  • @user-hw9qv9my3l
    @user-hw9qv9my3l Жыл бұрын

    На слабенькую троечку. Было бы несколько рейсов было бы десяток Парижев и Владивостоков. Где distinct?

  • @Edgar-pu1lc

    @Edgar-pu1lc

    8 ай бұрын

    Не душни

  • @dogvscatfunny9956
    @dogvscatfunny9956 Жыл бұрын

    Не чего понять не возможно, проще дописать в таблицу, чем создавать такую путаницу

Келесі