Андрей, спасибо огромное Вам! Благодаря Вашему курсу по информационным технологиям, протоколам, TLS, DNS,HTTPS и т.д. я подготовился и прошёл очень сложное собеседование! Желаю развития вашему каналу и больше подписчиков!
Спасибо большое за данный видео урок, очень помогает в обучении! Понял свои ошибки в коде при объединении 3 таблиц, после просмотра ролика смог все исправить, и теперь все отлично работает. Как говорится век живи век учись!)
Спасибо за урок. Все понятно, кроме одного: в теории Вы учили ставить название таблицы.столбец (т.е. Select Trip.Town_to), а в данном примере не уточняете столбец (Select Town_to). У меня были успешны оба варианта в итоге. Это потому, что данный столбец с уникальным названием?
Да, именно так. Название таблицы обязательно, если столбец с одинаковым именем есть в двух таблицах. В противном случае SQL и без названия таблицы сможет понять, откуда взять столбец.
На практике, в реальной, масштабной базе разве допустимо использовать такое обилие соединений? Сделал четвёртый join и дождался результата через несколько дней? Такое объединение по синтаксису допустимо, но с точки зрения производительности как лучше написать? Подскажите, пожалуйста
Производительность - это сложный вопрос, она определяется отдельно для каждого запроса. В общем виде сложно дать рекомендации. На практике объединение данных из трех или четырех таблиц вполне может работать быстро, но придется оптимизировать запрос.
Добрый день, спасибо за видео, только есть один вопрос. Есть таблица с данными пользователей назовем ее a.users в ней есть id пользователей и она сопоставима с второй таблицей к примеру a.user_spots в данной таблице у наc есть два блока user_id и spots_id. и есть третья таблица a.spots в ней у нас есть собственно блок spots_id что сопоставим с таблицей a.user_spots. Цель сопоставить три таблицы с выводом id юзера и присвоенной ему площадки? Просто я не совсем понимаю как мне сделать запрос на одну таблицу и по факту вообще кажется что так не работает. Буду признателен если подскажите или направите в нужном ключе.
Привет. А если я хочу сделать запись в таблицу со связями. Мне нужно создавать INSERT INTO и JOIN тоже? Как правильно создать запрос, чтобы в 3 таблицу подтянуло данные с 2 остальных ?
@@emilusm1903 Как бы то ни было, если считается, что у связи *ветвистый* конец указывает на "многих", то "многими" здесь являются поля id в таблице Trip и таблице Passenger. А если считается, что у связи *прямой* конец указывает на "многих", то "многими" здесь являются поля id в таблице Company. А id - уникальны. При любой интерпретации направления связей: в данной схеме есть противоречие.
Что делать если в БД в разных таблицах "Passenger" и "Company" два одинаковых имени "name" Как их объединить, чтобы name из двух таблиц подтягивались? Если через JOIN добавлять таблицу Passenger , то подтягиваются имена пассажиров А если не добавлять таблицу, то подтягиваются названия компаний Как объединить name из двух разных таблиц?
Андрей спасибо за очень полезную тему с 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. Я просто полумал есть ли у вас похожая наработка или просто что-нибудь посоветуете? с меня донат даже без ответа)) офигенный формат! это намного эффективнее чем просто лекция, да и быстрее наверное(слайды не надо готовить:))
Что происходит, когда дизлайков больше, чем лайков? Мне кажется, что на первом этапе таблица Messages объединяется с таблицей Message_likes, количество строк будет столько, сколько лайков. А на следующем этапе таблица Message_dislikes объединяется с составной таблицей с первого этапа, где столько строк, сколько лайков. К каждой строке с лайком добавляется столбец с дизлайком. Поэтому count выдает одинаковое количество строк.
@@AndreySozykin дело в том что когда есть только дизлайки (лайков еще ноль) то считается правильное количество, но как только ставится лайк количество уравнивается) это очень странно, но думаю вы правильно описали причину, проблема что я не понимаю как обьединить таблицы по другому, пробовал но выдает неправильные цифры, может как то использовать вложенный запрос типа для дизлайков (select md.id, count(md.dislikes) from md group by md.id) а затем уже обьединять?
Андрей, спасибо огромное Вам! Благодаря Вашему курсу по информационным технологиям, протоколам, TLS, DNS,HTTPS и т.д. я подготовился и прошёл очень сложное собеседование! Желаю развития вашему каналу и больше подписчиков!
Очень хороший урок, мне понравился! Смотрю уже третий раз, пытаюсь разобраться от и до.
Спасибо большое за данный видео урок, очень помогает в обучении! Понял свои ошибки в коде при объединении 3 таблиц, после просмотра ролика смог все исправить, и теперь все отлично работает.
Как говорится век живи век учись!)
Пожалуйста! Рад, что видео полезно!
Отличное объяснение. Если медленно, можете ставить x1,5. Спасибо огромное!
Отличный урок, спасибо большое!
Спасибо все очень понятно. И в sql academy я думаю по началу очень удобно обучаться так как есть подсказки.
Подскажите, а вот такого типа визуальные редакторы какие есть? СУБД. И к sqlite такое можно подключить?
Дякую за корисний контент :))))))
Спасибо, с каждым уроком все интереснее и интереснее.
Андрей спасибо за вашу работу, всё всегда понятно и содержательно!
Спасибо!
Спасибо! Прям все просится, имея несколько таблиц, автоматизировать)
Обязательно!
Спасибо вам большое. Заснул за 2 минуты. Помогли.
Почему в полной записи вы идете обраным ходом от Трип к Имени?
Браво!
Спасибо!
@@AndreySozykin в ВК в личку написал про ошибки.
Благодарю!
Спасибо за урок. Все понятно, кроме одного: в теории Вы учили ставить название таблицы.столбец (т.е. Select Trip.Town_to), а в данном примере не уточняете столбец (Select Town_to). У меня были успешны оба варианта в итоге. Это потому, что данный столбец с уникальным названием?
Да, именно так. Название таблицы обязательно, если столбец с одинаковым именем есть в двух таблицах. В противном случае SQL и без названия таблицы сможет понять, откуда взять столбец.
На практике, в реальной, масштабной базе разве допустимо использовать такое обилие соединений? Сделал четвёртый join и дождался результата через несколько дней? Такое объединение по синтаксису допустимо, но с точки зрения производительности как лучше написать? Подскажите, пожалуйста
Производительность - это сложный вопрос, она определяется отдельно для каждого запроса. В общем виде сложно дать рекомендации. На практике объединение данных из трех или четырех таблиц вполне может работать быстро, но придется оптимизировать запрос.
Спасибо за ответ! Правда моё любопытство не удовлетворено☺
Добрый день, спасибо за видео, только есть один вопрос. Есть таблица с данными пользователей назовем ее a.users в ней есть id пользователей и она сопоставима с второй таблицей к примеру a.user_spots в данной таблице у наc есть два блока user_id и spots_id. и есть третья таблица a.spots в ней у нас есть собственно блок spots_id что сопоставим с таблицей a.user_spots. Цель сопоставить три таблицы с выводом id юзера и присвоенной ему площадки? Просто я не совсем понимаю как мне сделать запрос на одну таблицу и по факту вообще кажется что так не работает. Буду признателен если подскажите или направите в нужном ключе.
Как будет выполняться INNER JOIN если в столце, по которому происходит обединение есть неуникальные значения (т.е. они повторяются)?
Привет. А если я хочу сделать запись в таблицу со связями. Мне нужно создавать INSERT INTO и JOIN тоже? Как правильно создать запрос, чтобы в 3 таблицу подтянуло данные с 2 остальных ?
спасибо, было интересно. #sql
А правильно ли направлены стрелки в схеме связей таблиц?
это не стрелки, а как бы ветви "от одного ко многим". Тоже поначалу думал что это стрелки
@@emilusm1903 Как бы то ни было, если считается, что у связи *ветвистый* конец указывает на "многих", то "многими" здесь являются поля id в таблице Trip и таблице Passenger.
А если считается, что у связи *прямой* конец указывает на "многих", то "многими" здесь являются поля id в таблице Company.
А id - уникальны. При любой интерпретации направления связей: в данной схеме есть противоречие.
На слабенькую троечку. Было бы несколько рейсов было бы десяток Парижев и Владивостоков. Где distinct?
Не душни
Что делать если в БД в разных таблицах "Passenger" и "Company" два одинаковых имени "name"
Как их объединить, чтобы name из двух таблиц подтягивались?
Если через JOIN добавлять таблицу Passenger , то подтягиваются имена пассажиров
А если не добавлять таблицу, то подтягиваются названия компаний
Как объединить name из двух разных таблиц?
AS
Аа привет Андрей, а что у вас с голосом?
С голосом, насколько могу судить, все хорошо. Что не так?
Андрей спасибо за очень полезную тему с 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.
Я просто полумал есть ли у вас похожая наработка или просто что-нибудь посоветуете?
с меня донат даже без ответа))
офигенный формат! это намного эффективнее чем просто лекция, да и быстрее наверное(слайды не надо готовить:))
Что происходит, когда дизлайков больше, чем лайков?
Мне кажется, что на первом этапе таблица Messages объединяется с таблицей Message_likes, количество строк будет столько, сколько лайков. А на следующем этапе таблица Message_dislikes объединяется с составной таблицей с первого этапа, где столько строк, сколько лайков. К каждой строке с лайком добавляется столбец с дизлайком. Поэтому count выдает одинаковое количество строк.
@@AndreySozykin дело в том что когда есть только дизлайки (лайков еще ноль) то считается правильное количество, но как только ставится лайк количество уравнивается) это очень странно, но думаю вы правильно описали причину, проблема что я не понимаю как обьединить таблицы по другому, пробовал но выдает неправильные цифры, может как то использовать вложенный запрос типа для дизлайков (select md.id, count(md.dislikes) from md group by md.id) а затем уже обьединять?
Не чего понять не возможно, проще дописать в таблицу, чем создавать такую путаницу