Ну тебя штормит! У меня к концу ролика морская болезнь разыгралась/видео лайк
@AndriyNahornyi
4 жыл бұрын
Прописал первый запрос тот что был у автора, в ответе получил страну, в которой живу )))))
@alexeicodes
3 жыл бұрын
То есть, насколько я понял, различие USING и ON является в том, что при ON мы должны указать(и приравнять ещё) какие 2 столбца в таблицах связаны с друг другом, а при USING - мы выбираем только одно название столбца, только лишь потому, что мы заранее знаем, что и в первой таблице, и во второй - связанные столбцы имеют одно название, верно всё?
@HtmllabRu
3 жыл бұрын
ON может содержать двух и более столбцов: ON a.c1 = b.c1 AND a.c2 = b.c2 AND a.c3 = b.c3 USING тоже, но с условием, что столбцы в таблицах одноимённые: USING (c1, c2, c3)
@vanderdt2
4 жыл бұрын
А вот и он! Первый ролик, при просмотре которого пришла мысль "Нифига не понятно".... когда вы выдаете результаты умозаключений, хорошо бы еще озвучить КАК вы дошли до данного результата. Т.е. анализ действий. Как пример: 7:00.... Как вы дошли до "id=capital", в данном случае, понятно только вам ) Но надо признать, я ждал его раньше. Но ваш уровень объяснения - просто поражает ) Грацио!
@HtmllabRu
4 жыл бұрын
Если уже посмотрели 13 роликов, жму руку!👍 🤝 Обычно мы связываем таблицы country и city по полям code и countrycode соответственно. Думаю вы уже разобрались, но на всякий случай добавлю, что в таблице country есть числовое поле capital (столица), которое содержит id номера города из таблицы city. Если сделать объединение на этих полях «id=capital», то найдём все страны с их столицами. А если добавить условие с названием страны, то найдём отдельную страну с её столицей.
@vanderdt2
4 жыл бұрын
@@HtmllabRu На что только не пойдешь, когда горит задача, решение которой зависит от того, о чем вы рассказывайте! Жму вам руку !
@vanderdt2
4 жыл бұрын
@@HtmllabRu Ашо момент... "Если уж пошла такая пьянка", и автор канала отвечает... Не могли бы вы, быть может, в одном ролике рассказать об отличиях MySQL и MariaDB. Вроде одно и то же, но синтаксис иногда выругивается (либо, опять же, я кривой)
@АльбертИванов-ц4х
5 жыл бұрын
про JOINы очень туманно рассказано, с учетом оговорок и повторных импортов таблиц тяжеловато переваривать )
@АндрейМатрица
2 жыл бұрын
просто надо больше практиковаться. например, "на котиках")
@ArthasLIO
5 жыл бұрын
Будут видео с триггерами, функциями, процедурами и транзакциями?
@HtmllabRu
5 жыл бұрын
Да, после некоторой паузы
@AndreyShevchenko-ub2ew
3 жыл бұрын
Нормально джойны зашли, вот пример тройного джойна, который выводит все страны, и их столицы, где русскоговорящее население составляет >10%. : SELECT co.name, ci.name, cl.language, cl.percentage FROM country AS co JOIN city AS ci JOIN countrylanguage AS cl ON co.capital = ci.id AND co.code = cl.countrycode WHERE cl.language = 'Russian' AND cl.percentage > 10 ORDER BY cl.percentage DESC;
@ЕленаКовалевич-ч2л
4 жыл бұрын
Круто! Спасибо! :)
@samiraxmedov3394
3 жыл бұрын
Что круто я не понял дудуш
@ЕленаКовалевич-ч2л
3 жыл бұрын
@@samiraxmedov3394 что конкретно?
@samiraxmedov3394
3 жыл бұрын
@@ЕленаКовалевич-ч2л я новичек, сам смотрю в ютубе и учусь , но очень сложно с джоинами , только сегодня начал учить уже голова болит(( завтра на свежую голову начну, вопрос есть такой что вот интежер и варчар в каких имено моменте надо выписывать, ну эт я понял сто id int, name email vharcar
@ЕленаКовалевич-ч2л
3 жыл бұрын
@@samiraxmedov3394 так у тебя проблемы не с join, а с типами данных. Начни сначала основы основ. Когда конкретно для столбцов применяются те или иные типы данных, а позже уже переходи к объединению таблиц. И не пытайся все в один день понять, разбивай информацию по дням, а лучше одну тему в день , для осмысления. Если я правильно тебя поняла, если нет, то поясни.
@samiraxmedov3394
3 жыл бұрын
@@ЕленаКовалевич-ч2л спасибо, но реально желание есть выучить🙏🏼
@Женечег-е7п
3 жыл бұрын
А существует разница в порядке таблиц до и после INNER JOIN? То есть разница между таблица1 INNER JOIN таблица2 и таблица2 INNER JOIN таблица1
@HtmllabRu
3 жыл бұрын
только в порядке столбцов в результирующей выборке
@vladbelov8397
4 жыл бұрын
В данный раздел для понимания нужно вставить графическую таблицу вариантов JOIN из coderoad.ru/5706437/%D0%9A%D0%B0%D0%BA%D0%B0%D1%8F-%D1%80%D0%B0%D0%B7%D0%BD%D0%B8%D1%86%D0%B0-%D0%BC%D0%B5%D0%B6%D0%B4%D1%83-%D0%B2%D0%BD%D1%83%D1%82%D1%80%D0%B5%D0%BD%D0%BD%D0%B8%D0%BC-JOIN-%D0%BB%D0%B5%D0%B2%D1%8B%D0%BC-JOIN-%D0%BF%D1%80%D0%B0%D0%B2%D1%8B%D0%BC-JOIN-%D0%B8-%D0%BF%D0%BE%D0%BB%D0%BD%D1%8B%D0%BC-JOIN
@HtmllabRu
4 жыл бұрын
Мне нравится эта схема 👍
@АльбертИванов-ц4х
5 жыл бұрын
Не все смотрят ваши видео подряд за раз, как я. Наверно, хорошо бы дать на старте пояснения кратко, как открыть схему, с которой вы начинаете. Или хотя бы ссылку на урок, где это раскрыто - урок 7.
@HtmllabRu
5 жыл бұрын
Спасибо)
@vladyckroitenberg7870
2 жыл бұрын
оч исчерпывающе и антологично; видно автор на теме не один комплект коронок сгрыз, но просматривать приходится на скорости 1,75.
@HtmllabRu
2 жыл бұрын
Vladyck, 👍
@kas-cor
4 жыл бұрын
16:10 создаю таблицы, 19:39 забываем что только что их создали, и говорим что ни как не могли этого сделать.
@mount_and_blade_viewer
4 жыл бұрын
hahaha
@dmitriynikitin4948
4 жыл бұрын
та да , шиза ? или возможно он это видео записывал в два захода и забыл
@TheTempest_
Жыл бұрын
Жесть у меня рандом сразу Турцию выдал
@singlebw4065
3 жыл бұрын
Как одним запросом получить 2 таблицы из бд. Как вообще получить просто 2 и более таблицы. Есть у меня 6 таблиц, поля совпадают. Я хотел что бы по клику на сайте я получил все полностью таблицы с разным наполнением и отрисовать их на сайте.
@HtmllabRu
3 жыл бұрын
Есть два способа. Первый: создать объединение таблиц - тяжелую операцию с выборкой, где после FROM будет несколько таблиц через запятую, или воспользоваться INNER JOIN (или другими JOINами). При этом задать таблицам псевдонимы и указать эти псевдонимы для каждого поля, чтобы не было конфликтов из-за одноименных полей Второй: Создать SELECT для каждой таблицы, а потом объединить их оператором UNION. Но! Придётся в каждом SELECT сделать одинаковое "количество мест". То есть, если в одном SELECT 7 полей, а во втором 3 поля, то во втором придется дописать 4 раза null или пустую строку
@singlebw4065
3 жыл бұрын
@@HtmllabRu Я пробовал писать типа SELECT t1. *, t2. * FROM t1, t2. Так у меня выводит только 1ю таблицу при чëм каждая строка * на кол-во элементов в t2. Пробовал t1 INNER JOIN t2 вижу только одну таблицу. И вот интересно если даже удасться получить все таблицы это будет массив склеиных таблиц? Ну то есть колонка id будет 1,2,3, 1,2,3,4, ... . Сгруппироватьвообще можно? Просто 6 таблиц 1 запросом. допустим в 1м массиве 1 таблица, во 2м 2я и т. д. По конкретней бы пример. Везде показывают только выборку, но мне куски не нужны, мне полностью как есть все таблицы с разным наполненением.
@HtmllabRu
3 жыл бұрын
@@singlebw4065 Вот тут рассказываю о Union kzitem.info/news/bejne/laOFyoB_rKOrbH4. С его помощью можно реализоваться следующий пример (внимание! При существовании удаляется база db1): drop database if exists db1; create database db1; use db1; create table tbl1(id integer, title varchar(100)); insert into tbl1(id, title) values(1, "Hello"); insert into tbl1(id, title) values(2, "world"); select * from tbl1; create table tbl2(id integer, title varchar(100), price decimal(6,2)); insert into tbl2(id, title, price) values(1, "Привет", 1000.50); insert into tbl2(id, title, price) values(2, "MySQL", 2300); insert into tbl2(id, title, price) values(3, "!", 456.78); select * from tbl2; #Через UNION select id 'Идентификатор', title 'Название', price 'Цена' from tbl2 union all select id, title, 0 from tbl1; #Через UNION с указанием таблиц select id 'Идентификатор', title 'Название', price 'Цена', 'tbl2' as 'Таблица' from tbl2 union all select id, title, 0, 'tbl1' from tbl1; #Через JOIN select id 'Идентификатор', title 'Название', price 'Цена' from tbl2 union all select id, title, 0 from tbl1; Но мне кажется вы хотите не объединение таблиц через JOIN, и даже не объединение запросов, а что-то вроде процедуры, которая бы выводила в консоли отдельные таблицы (тут нужно заметить, что результат SELECT всегда одна таблица, потому такая процедура будет содержать несколько операторов SELECT). Поправьте, если я не понял ваш вопрос. Вот пример функции (видео по функциям есть тут kzitem.info/news/bejne/w4OCtZujrKJma20): use db1; delimiter // drop procedure if exists showDataTables // create procedure showDataTables() begin select id, title from tbl1; select id, title, price from tbl2; end // delimiter ; call showDataTables(); Можно было бы поработать с параметрами или затронуть курсоры, но для меня было важно написать максимально простой пример, который, как мне кажется, вам мог бы помочь
@singlebw4065
3 жыл бұрын
@@HtmllabRu Если более детально описать то вот что я задумал. Что бы на сайте не держать таблицы я решил сохранить их в бд. В таблицах описаны услуги электромонтажа. Кстате заголовки я тоже решил сохранить там что бы ориентироваться и клиенту если что можно было в базе изменить имя а не лазить по коду. Уж не знаю насколько грамотно, на грабли самому приходиться наступать. Придёт время ошибки мои вылезут. 1. таблица black_work id services unit price 1 Монтаж под ключ (черновой этап) NULL NULL 2 Точка без гофротрубы вывод 250 3 Точка с гофротрубой вывод 300 4 Подрозетники (ГКЛ) шт. 100 ........... и не известно сколько там ещё будет 2. таблица clean_work id services unit price 1 Монтаж под ключ (чистовой этап) NULL NULL 2 Фурнитура в подрозетники шт. 100 3 Фурнитура накладная шт. 300 ........... и не известно сколько там ещё будет ....... 6. таблица pipe_install id services unit price 1 Монтаж трубы NULL NULL 2 Гофротруба до Ø32 мм м.п. 15 ........... и не известно сколько там ещё будет Вот UNION то что впринципе надо. На php $tables = ["black_work", "clean_work", "cable_laying", "low_volt_system", "retro_wiring", "pipe_install"]; $queryStr = ""; foreach ($tables as $item) { if($item == $tables[count($tables) - 1]){ $queryStr .= "SELECT * FROM $item"; break; } $queryStr .= "SELECT * FROM $item UNION "; } Вообщем это вот такой запрос SELECT * FROM black_work UNION SELECT * FROM clean_work UNION SELECT * FROM cable_laying UNION SELECT * FROM low_volt_system UNION SELECT * FROM retro_wiring UNION SELECT * FROM pipe_install Таблицы не объединяю вместе т.к. разные виды работ. И получаю 0: {id: 1, services: "Монтаж под ключ (черновой этап)", price: null, unit: null} 1: {id: 2, services: "Точка без гофротрубы", price: 250, unit: "вывод"} 2: {id: 3, services: "Точка с гофротрубой", price: 300, unit: "вывод"} 3: {id: 4, services: "Подрозетники (ГКЛ)", price: 100, unit: "шт"} 4: {id: 5, services: "Подрозетники (кирпич)", price: 150, unit: "шт"} 5: {id: 6, services: "Подрозетники (бетон)", price: 250, unit: "шт"} 6: {id: 7, services: "Штроба (кирпич)", price: 120, unit: "шт"} 7: {id: 8, services: "Штроба (бетон)", price: 180, unit: "шт"} 8: {id: 9, services: "Распред/коробка (сварка)", price: 300, unit: "шт"} 9: {id: 10, services: "Распред/коробка (опресовка)", price: 350, unit: "шт"} 10: {id: 11, services: "Ниша под встр/щит", price: 1000, unit: "от"} 11: {id: 12, services: "Отверстия проходные до Ø32 мм", price: 200, unit: "шт"} 12: {id: 13, services: "Лоток (метал)", price: 300, unit: "м.п"} 13: {id: 1, services: "Монтаж под ключ (чистовой этап) ", price: null, unit: null} 14: {id: 2, services: "Фурнитура в подрозетники", price: 100, unit: "шт"} 15: {id: 3, services: "Фурнитура накладная", price: 200, unit: "шт"} 16: {id: 4, services: "Точечные светильники в ГКЛ", price: 150, unit: "шт"} 17: {id: 5, services: "Светильники настенные (Бра)", price: 250, unit: "шт"} 18: {id: 6, services: "Люстра", price: 500, unit: "от"} 19: {id: 7, services: "Светодиодная лента", price: 150, unit: "п.м"} .............. 39: {id: 4, services: "Фурнитура (с рамками)", price: 200, unit: "шт"} 40: {id: 5, services: "Распред/коробка (на клемах)", price: 350, unit: "шт"} 41: {id: 1, services: "Монтаж трубы", price: null, unit: null} 42: {id: 2, services: "Гофротруба до Ø32 мм", price: 15, unit: "м.п."} 43: {id: 3, services: "Гофротруба Ø50 мм", price: 25, unit: "м.п."} 44: {id: 4, services: "Труба ПНД/ПВХ до Ø32 мм", price: 40, unit: "м.п."} 45: {id: 5, services: "Труба ПНД/ПВХ Ø50 мм", price: 60, unit: "м.п."} 46: {id: 6, services: "Металлорукав до Ø32 мм", price: 40, unit: "м.п."} Существует ли что-нибудь в sql что бы получить данные 0: [ массив 1й таблицы ] 1: [ массив 2й таблицы ] .... 1: [ массив 6й таблицы ] Щас сижу про JSON в MariaDB почитываю на всякий пожарный. Ещё кстате пытался заносить данные из консоли, так сказать научиться и потренироваться. оказалось там и показывает кракозябры хотя в графической таблице нормально всё. Еле нашёл причину. Оказывается в файле mariaDB.conf нужно было default-character-set = cp866 ставить.
@singlebw4065
3 жыл бұрын
@@HtmllabRu Также мне пришлось таблицы переписывать что бы заголовок вставить в 1й id каждой таблицы. Я на тот момент подумал, а нет ли способа запросом сдвинуть все строки таблицы на +1 по id что бы 1я ячейка освободилась и в неё можно было что либо положить.
@pavelgrigorov1296
4 жыл бұрын
помогите пожалуйста , есть две таблицы связанные отношением многие к многим, как получить поле первой таблицы, по конкретному ид второй таблицы?
@HtmllabRu
4 жыл бұрын
SELECT t1.field FROM t1 LEFT JOIN (t2, t3) ON (t2.a = t1.a AND t3.b = t2.b)
@pavelgrigorov1296
4 жыл бұрын
@@HtmllabRu благодарю!!!!!
@pavelgrigorov1296
4 жыл бұрын
@@HtmllabRu я сделал так же, только через INNER JOIN результат одинаковый , не понимаю в чем разница
@pavelgrigorov1296
4 жыл бұрын
@@HtmllabRu t3 - это таблица со сложенным ключем, я правильно понял?
@HtmllabRu
4 жыл бұрын
@@pavelgrigorov1296 тут t2 таблица с двумя полями из t1 и t3. INNER JOIN все соответствия строк из одной таблицы строкам из другой LEFT JOIN показывает все записи из левой таблицы, и какие есть соответствия из правой
@qweasd2275
4 жыл бұрын
А можно пример связи 3 таблиц с inner join из world ?
@HtmllabRu
4 жыл бұрын
Там в каждой таблице есть столбец с кодом страны, потому пример может показаться несколько искусственным. Допустим нужно узнать в какой стране находится город Moscow и какие языки в этой стране используются (другими словами, что авторы world поместили в базу) SELECT city.name 'город', country.name 'страна', count(language) 'кол-во языков' FROM city INNER JOIN country INNER JOIN countrylanguage ON country.code = city.countrycode AND countrylanguage.countrycode = country.code WHERE city.name = 'Moscow' GROUP BY 1,2; +--------+--------------------+---------------+ | город | страна | кол-во языков | +--------+--------------------+---------------+ | Moscow | Russian Federation | 12 | +--------+--------------------+---------------+
@АльбертИванов-ц4х
5 жыл бұрын
*ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(idor der)... PRIMARY KEY Без нижнего подчеркивания оказалось ! Моя ошибка
@brainstormhs
5 жыл бұрын
Пробовал посчитать сколько человек говорят на том или ином языке в каждом регионе. В итоге MySQL результат выдал, но результат был не точный (некоторые значения проверял - там явные откланения на +/- 100 человек). Вроде переполнение BigInt не должно быть... Хотя маленькие значения считает неплохо.
@HtmllabRu
5 жыл бұрын
Покажете ваш SELECT?
@brainstormhs
5 жыл бұрын
@@HtmllabRu Ну возьмем такой код : SELECT co.Name, cl.Language, co.Population, cl.Percentage, (co.Population*cl.Percentage) AS 'POPxPerc' FROM country co INNER JOIN countrylanguage cl ON Code = CountryCode WHERE co.Code = 'TUR'; Тут тысячи умножаются на проценты (с 1 запятой, на 100 не делю) в конце должны получаться нули, но их там нету.. (выдает для арабского языка 93227398.4) При этом проверка данных для арабского языка считает сама по себе нормально: select 66591000*1.4 \G; выдает 66591000*1.4: 93227400.0
@SergioWahaWaher
4 жыл бұрын
Если ищем страну и ее столицу, вот так вроде как по-чище и читается проще: SELECT country.name AS country, city.name AS capital FROM country INNER JOIN city ON country.capital = city.id WHERE country.name = 'Turkey';
@natalya.provkova2002
3 жыл бұрын
Извините конечно.. Но про JOINы, мало, что понятно(
@HtmllabRu
3 жыл бұрын
Ок. Попробуем так: - есть таблица пользователей user с полями iduser и name - и таблица статей articles с полями idarticles, content и user_iduser. Таблицы связаны отношением один ко многим (один пользователь пишет много статей, не рассматриваем вариант с многоавторскими статьями) Чтобы выбрать из таблиц всех пользователей с их статьями, нужно написать запрос SELECT name, content FROM user INNER JOIN articles ON iduser = user_iduser; Будут показаны все имена пользователей и статья, которые они написали. То есть будет найдено однозначное соответствие записей второй таблице записям в другой. Фрагмент ON iduser = user_iduser в запросе с INNER JOIN отвечает за такое однозначное соответствие одних записей другим. Без этого фрагмента, записям одной таблице будут сопоставлены все (любые) записи другой таблицы (а общее количество полученных записей будет равно произведению количества строк одной и другой таблицы).
@natalya.provkova2002
3 жыл бұрын
@@HtmllabRu А RIGHT JOIN выводит все из правой, а там где, где нет пары выставляет NULL. А LEFT JOIN выводит все из левой таблицы (которая слева от оператора), а там, где нет пары выставляет NULL. Верно?)
@HtmllabRu
3 жыл бұрын
Точно 👍
@radikovichkz2470
4 жыл бұрын
Уважаемый автор. Пожалуйста подготавливайте материал более конкретней без всяких, а да работает, а нет неправильно.
@БорисВасильев-д1ф
3 жыл бұрын
JOIN нафиг не нужны, нормальные программисты их не используют, после применения потом жалуются, типо у меня запросы тормозят, у меня база виснет и тп.
@scherbakovss2012
11 ай бұрын
22:40 SELECT * FROM customer LEFT JOIN `order` ON customer.idcustomer = `order`.customer_id;
Пікірлер: 63