1:04:27 меня одного смущает, что это за abc такое, и почему у меня его нет? А также почему у меня есть "Côte de Blaye" (Beverages) и "Nord-Ost Matjeshering" (Seafood), а у вас этих наименований нет, хотя они также меньше 20
Дикция топ , интеллект топ , все понятно , дай бог чтобы каждый кто хочет стать аналитиком , после этого видео приобрёл хотя бы 1/3 знаний для стартапа 😂❤ бро с меня подписка и лайк 👍
По использованию cross join можно привести такой пример - есть список сотрудников, нужно для них составить таблицу расписания на месяц, то есть должны быть строки для каждого дня месяца и каждого сотрудника create local temporary table ids ( temp_id int null ); insert into ids values (1), (2), (3), (4) ; create local temporary table dates ( rep_date date null ); insert into dates select cast(generate_series('2024-02-01', '2024-02-29', interval '1 day') as date) ; select rep_date, temp_id from dates cross join ids
Учусь в skillfactory, модуль postgresql подача конечно......Проходил отдельно SQL у другого автора. Тут хорошая подача. Для меня самое сложно было осознать, что запросы идут снизу вверх (к примеру : сначала фильтрация, а только потом вывод, ну это лично моя проблема).Автора приятно слушать, прям оратор=). Обязательно всем к просмотру!!
25:30. У меня вопрос, почему мы берем unit_price именно из таблицы products? Ведь по идее наша таблица, которая в конце получится должна как бы описывать заказы, то есть почему бы не взять unit_price из order_details? И вообще почему unit_price различается в этих таблицах?
У нас на таблице orders стоит ограничение внешнего ключа fk_orders_employees. Кажется оно не даст создать заказ без привязки к существующему работнику. Получается запрос left join orders... where order_id is NULL будет всегда возвращать пусто. Но это не точно)
Хороший курс,но вот что происходит на 44:03, что за черточки,что за кавычки пустые, что вообще за синтаксис и что вообще происходит с буквами не понятно. Причем в видео подано как будто это уже проходили.
Да, как-то автор не остановился на этом. Две вертикальные черточки рядом - это оператор конкатенации, то есть объединения строк. Кавычки пустые это просто чтобы был пробел между словами, которые мы объединяем. То что происходит с буквами показывается на 45:00 - мы указываем из какой таблицы выбираем данные (в данном случае employee) и даем ей псевдоним e, чтобы было проще обращаться к столбцам этой таблицы. То есть запись е.first_name означает, что мы обращаемся к столбцу first_name таблицы employee. Надеюсь, понятно объяснил. PS: и на 59:00 он говорил о об этих двух вертикальных черточках.
25:22 почему используем именно products.unit_price, а не order_details.unit_price ? и какая разница между этими столбцами ? почему в них разные данные ?
Очень жаль, что не рассказано, что в ON (...) можно писать любые условия и это иногда полезно. Ну и в FULL OUTER JOIN у автора ошибка. Не хватает паблишера с ID 5.
У меня в решении второй задачи на 1:04:21 получается другой результат. Получается 6 строк и 2 из них отличаются от тех, что на экране. Переписал в точности как на экране, то же самое. Это только у меня такое получается? Может быть дамп базы поменялся после записи курса?
Спасибо за курс)) Изучаю материал тут, а потом делаю домашку на GeekBrains =/ Первая часть видео конечно не очень получилась в таком формате. Лучше было бы сделать слайды, где каждая табличка имеет свой цвет, а в результате JOINa каждая клетка имела свой цвет (цвет таблички, из которой она была взята).
Спасибо за качественный контент) Вопрос: нормально ли, что я не всё запоминаю из этих лекций, а только какие-то ключевые понятия и команды SQL или всё таки нужно зубрить для хорошего результата в будущем?
Думаю, если хочешь быть специалистом в сфере базы данных (Data Science, Backend-разработчик), то лучше, конечно, знать и запоминать все. Если изучаешь SQL для общего понимания картины со стороны back, то можно просто посмотреть как работает эта система и не углубляться.
Как увеличить производительность программы? Я так понимаю там изначально выделен очень маленький объём памяти. как его увеличить и до какого предела от общего объема ram? А то запросы могут минуты обрабатываться....
Автор, пожалуйста, больше никогда не советуйте использовать using() вместо on. Код НЕ становится более читабельным, это становится издевательством над теми, кто впоследствии будет сопровождать написанное подобным образом.
Это неявное соединение. А если таблиц десятки и надо поменять их порядок в join-ах... У автора прослеживается отсутствие опыта работы с крупными системами и огромными запрсами)
Не поняла, в каких случаях использовать INNER, когда LEFT JOIN. И как определить какое название таблицы нужно писать первой, а какую второй: from products join categories или from products join categories
select product_name, units_in_stock, contact_name, phone from products join suppliers using(supplier_id) join categories using(category_id) where category_name in ('Beverages','Seafood') and discontinued != 1 and units_in_stock < 20;
Аналогичная история: SELECT product_name, units_in_stock, contact_name, phone FROM products JOIN categories USING(category_id) JOIN suppliers USING(supplier_id) WHERE category_name IN ('Beverages', 'Seafood') AND discontinued = 0 AND units_in_stock < 20 ORDER BY units_in_stock уже думал, что у меня беда с головой
Понятны типы JOINов, объедиение нескольких таблиц, группирование, комбинирование фильтров по цене, количеству и т.д. Но непонятны порядок и действия по столбцам с orders.emploee_id и остальных после ON, особенно когда в SELECT другие столбцы непонятно как они взаимодействуют emploees.emploee_id и другими id.
Все происходит благодаря тому самому внешнему ключу (FOREIGN KEY). Зависимая таблица привязана к первичному ключу (как правило) в главной таблице через внешний ключ, что и позволяет достать какие-то данные :) То есть внешний ключ - это вроде указания на связь с другой таблицей, потому что данные почти всегда связаны между собой.
@@EngineerSpock Вот именно что не говорится, а в описании написано про рекурсию. Рекурсивное соедиенение это когда можно по заданному элементу получить все родительские, например. В sql server это при помощи CTE реализуется.
Кто-нибудь объясните в чем ошибка этого решения в 1-й задаче из ДЗ SELECT customers.company_name, first_name || ' ' || last_name AS full_name FROM customers, employees, shippers WHERE (customers.city = 'London' AND employees.city = 'London') AND shippers.company_name = 'Speedy Express'
Спасибо за видео! Хотела уточнить: мы когда заменили на 49 минуте видео ON... на USING, то я не поняла момент. А именно: JOIN соединяет последовательно таблицы (при использовании USING)? (Т к при использовании ON мы явно задавали какие столбцы каких таблиц соединяли, а в USING только имя атрибутов (столбиков))
В слове AS самое главное не сказать задница случайно. Так лучше "эз" сказать (з - очень краткое), а то и "аз" вообще чтобы наверняка 😄. Курс классный 👍
Данный курс на RUclips - сильно укороченная (демо) версия полного курса, который вы можете приобрести на stepik (с карточкой из РФ) или Udemy (с карточкой не из РФ) Купить полный курс на stepik: www.engineerspock.com/buy-postgres-youtube-stepik - получите скидку 30% Купить полный курс на udemy: www.engineerspock.com/buy-postgres-youtube-udemy Все курсы от EngineerSpock: www.engineerspock.com/offer-spock-youtube ***** Подпишись на канал в Telegram: t.me/engineerspock_it Подписка на Boosty: boosty.to/engineerspock Донаты на развитие: pay.cloudtips.ru/p/1f080f72 Чат в Telegram: t.me/python_devs Ссылка на репозиторий в GitHub: github.com/EngineerSpock/postgres-course-ru *****
39:40 Не в укор автору (может это есть в более поздних уроках), похоже SELF JOIN'ом действительно называют разовый джойн на саму себя, но странно, что этот запрос называют иерархическим и рекурсивным. Рекурсии то нет =\. Ведь тут только два уровня - нулевой (сотрудник) и первый (его шеф). Логичным было бы получить полный путь от помощника уборщика до главы корпорации. В Оракле это решается через CONNECT BY. Здесь, похоже, подобное решается через CTE (WITH). Что-то вроде (не тестил, т.к. у нас в учебной бд менеджер не указан): WITH RECURSIVE tree AS ( SELECT employee_id, name, manager_id, 1 AS level FROM employees WHERE manager_id IS NULL -- Выбираем главу компании UNION ALL SELECT e.employee_id, e.name, e.manager_id, t.level + 1 FROM employees e JOIN tree t ON t.employee_id = e.manager_id ) SELECT employee_id, name, level FROM tree ORDER BY level, name; Запрос выводит главу компании, потом его ближайших подчиненных, потом подчиненных этих подчиненных и т.д. до последнего дворника. Или вот другой прикол - генерация числовой последовательности (можно и рандомной, тогда во второй столбец рандомные числа пихаем). Этот запрос проверил: WITH RECURSIVE tree AS ( SELECT 1 AS level UNION ALL SELECT t.level + 1 FROM tree t WHERE level
Кстати, это уже явно выходит за область курса (в отличии от предыдущего моего коммента), но очень советую всем, кто идет по этому курсу, поинтересоваться в качестве факультатива какие именно бывают джойны в плане алгоритма реализации. Сегодня этот вопрос на собесе в лёгкую прилетает даже джунам и это входит в минимум. Возможно его автор поднимет позже, когда дойдет до планов запроса, но раз уж это урок про джойны, то вскользь упомянуть стоит. Запрос в гугл "Nested Loop Join, Hash Join, Merge Join, Index Join".
CREATE TABLE employee ( employee_id INT PRIMARY KEY, first_name VARCHAR (255) NOT NULL, last_name VARCHAR (255) NOT NULL, manager_id INT, FOREIGN KEY (manager_id) REFERENCES emlpoyee (employee_id) ); здесь мне говорит что такой таблицы нет
1:04:27 меня одного смущает, что это за abc такое, и почему у меня его нет?
А также почему у меня есть "Côte de Blaye" (Beverages) и "Nord-Ost Matjeshering" (Seafood), а у вас этих наименований нет, хотя они также меньше 20
Отличный курс!
Даже за платно никтотне объяснит более доходчиво! 🔥
Лучшее объяснение Join'ов! Очень благодарна за курс!
Благодарю за спокойную грамотную подачу материала.
Лучший курс по SQL!
Дикция топ , интеллект топ , все понятно , дай бог чтобы каждый кто хочет стать аналитиком , после этого видео приобрёл хотя бы 1/3 знаний для стартапа 😂❤ бро с меня подписка и лайк 👍
Классный пример SELF JOIN, спасибо! :)
Лучший канал! Масса полезной информации, и четкое объяснение!
По использованию cross join можно привести такой пример - есть список сотрудников, нужно для них составить таблицу расписания на месяц, то есть должны быть строки для каждого дня месяца и каждого сотрудника
create local temporary table ids (
temp_id int null
);
insert into ids
values
(1),
(2),
(3),
(4)
;
create local temporary table dates (
rep_date date null
);
insert into dates
select cast(generate_series('2024-02-01', '2024-02-29', interval '1 day') as date)
;
select rep_date, temp_id
from dates
cross join ids
Огромная благодарность! Вы большой молодец! Сильно помогли разобраться в данной теме!
после изучения возможностей power query решил и SQL заняться, хорошая подача материала.
Спасибо, буду изучать. Пока все понятно по курсу. 🦝🦝🦝
Спасибо за замечательные уроки!
На 9:40 разве строку предпоследнюю не забыл?
West Coast / Chicago / Null / Null
Всё так. У автора ошибка в результате FULL OUTER JOIN. Почему бы ему не сделать закрепленный комментарий с errata.
спасибо за Ваши видео от всей души
Учусь в skillfactory, модуль postgresql подача конечно......Проходил отдельно SQL у другого автора. Тут хорошая подача. Для меня самое сложно было осознать, что запросы идут снизу вверх (к примеру : сначала фильтрация, а только потом вывод, ну это лично моя проблема).Автора приятно слушать, прям оратор=). Обязательно всем к просмотру!!
Спасибо что делишься знаниями
Почему в соединённой таблице в FULL OUTER JOIN 10:36 нет строки West Coast Publishing CHicago ???
И ISBN столбец в CROSS JOIN? 12:00 ?
34:47 вспомнил старый мем "Должны работать трезвые водители, но у нас таких нет, все нормальные ребята" :D
12:03 в результате должен был быть ещё и столбик ISBN?
Спасибо, классные видео!
У тебя в четвертом тайме опечатка "Рекурсивное соедиЕНЕние (джойн) - SELF JOIN"
=]
Где в результирующей таблице ISBN в cross join?
25:30. У меня вопрос, почему мы берем unit_price именно из таблицы products? Ведь по идее наша таблица, которая в конце получится должна как бы описывать заказы, то есть почему бы не взять unit_price из order_details? И вообще почему unit_price различается в этих таблицах?
Почему когда я пишу любой запрос кроме Select... From; у меня ничего не выводит?
неудачные примеры с книгами, не воспринимается, проще надо, типа красный трактор, белый суперкар, черная легковушка, зеленый самокат и тд
У нас на таблице orders стоит ограничение внешнего ключа fk_orders_employees. Кажется оно не даст создать заказ без привязки к существующему работнику. Получается запрос left join orders... where order_id is NULL будет всегда возвращать пусто. Но это не точно)
Хороший курс,но вот что происходит на 44:03, что за черточки,что за кавычки пустые, что вообще за синтаксис и что вообще происходит с буквами не понятно. Причем в видео подано как будто это уже проходили.
Да, как-то автор не остановился на этом. Две вертикальные черточки рядом - это оператор конкатенации, то есть объединения строк. Кавычки пустые это просто чтобы был пробел между словами, которые мы объединяем. То что происходит с буквами показывается на 45:00 - мы указываем из какой таблицы выбираем данные (в данном случае employee) и даем ей псевдоним e, чтобы было проще обращаться к столбцам этой таблицы. То есть запись е.first_name означает, что мы обращаемся к столбцу first_name таблицы employee. Надеюсь, понятно объяснил.
PS: и на 59:00 он говорил о об этих двух вертикальных черточках.
Для меня тоже это было неожиданно. Но в целом можно все это чекнуть самостоятельно, там весьма просто по этому оператору
Молодец, конечно. И сразу понятно, что курс для новичков. Другие непонятно для кого, для новичков непонятно ничего, для остальных слабо.
25:22
почему используем именно products.unit_price, а не order_details.unit_price ? и какая разница между этими столбцами ? почему в них разные данные ?
Спасибо👍😀
Забавно видеть, как чем дальше мы идем, тем меньше просмотров у курса и меньше комментариев. Надеюсь, я дойду до конца)
Заметьте, так в принципе жизнь устроена. Сидеть рубиться в приставку приятнее гораздо.
@@EngineerSpock тут скорее всего сливаются на ' ВЕСЬ SQL за 30 минут или познать IT за неделю' !!
@@haryariy2089 хауди хо, друзья))
прём до конца...
это не полный курс
да совсем не дурно, возьму на заметку.
спасибо
Спасибо за видео, отдельная джакузи в раю за них. А что за топ курс на английском упоминали?
Очень жаль, что не рассказано, что в ON (...) можно писать любые условия и это иногда полезно.
Ну и в FULL OUTER JOIN у автора ошибка. Не хватает паблишера с ID 5.
какие условия? в каких случаях это полезно?
У меня в решении второй задачи на 1:04:21 получается другой результат. Получается 6 строк и 2 из них отличаются от тех, что на экране. Переписал в точности как на экране, то же самое. Это только у меня такое получается? Может быть дамп базы поменялся после записи курса?
да, скорее всего поменялась база, у меня тоже другой результат
Тоже самое. Дополнительно получаю позицию с product_name = "Côte de Blaye"
плюсую, все ок, должно быть 6 записей если ничего не делали с базой, там автор скорее всего в других уроках что то удалял)
то же самое
Спасибо за курс)) Изучаю материал тут, а потом делаю домашку на GeekBrains =/
Первая часть видео конечно не очень получилась в таком формате. Лучше было бы сделать слайды, где каждая табличка имеет свой цвет, а в результате JOINa каждая клетка имела свой цвет (цвет таблички, из которой она была взята).
Спасибо за качественный контент)
Вопрос: нормально ли, что я не всё запоминаю из этих лекций, а только какие-то ключевые понятия и команды SQL или всё таки нужно зубрить для хорошего результата в будущем?
Думаю, если хочешь быть специалистом в сфере базы данных (Data Science, Backend-разработчик), то лучше, конечно, знать и запоминать все. Если изучаешь SQL для общего понимания картины со стороны back, то можно просто посмотреть как работает эта система и не углубляться.
Как увеличить производительность программы? Я так понимаю там изначально выделен очень маленький объём памяти. как его увеличить и до какого предела от общего объема ram? А то запросы могут минуты обрабатываться....
52:22 ♂AS♂
Хороший курс, но у меня почему то нет Speedy Express
44:24 что такое | | ?? разъясните пажее
конкатенация же ш, это очевидно) вместо знака + для соединения разных значений в одно целое
А если я выполнил 1 и 2 задачу с помощу LEFT JOIN, это ошибка?
Автор, пожалуйста, больше никогда не советуйте использовать using() вместо on. Код НЕ становится более читабельным, это становится издевательством над теми, кто впоследствии будет сопровождать написанное подобным образом.
почему? всё повторяющееся убрано а нужное оставлено разве нет?
Это неявное соединение. А если таблиц десятки и надо поменять их порядок в join-ах... У автора прослеживается отсутствие опыта работы с крупными системами и огромными запрсами)
Спасабо!.
А где найти такую тестовую Базу данных которой вы пользуетесь на протежении курса?
В первом выпуске курса под описанием видео
Самое тяжёлое когда join объединяется с group by
Если тут ни одно из ДЗ не смог выполнить, то не стоит пока идти дальше?
Спустя 3 месяца, пройдя 2 курса на степике и 1 курс карпова на его сайте я так и не смог выполнить эти ДЗ.
у меня в первом задании пишет ERROR: relation "orders" does not exist
LINE 3: FROM "orders" AS o
Вот что непонятно: зачем прописывать референс, если потом то же самое повторяешь в джойне?
JOIN LATERAL если добавишь то было бы еще круче)
😎
Не поняла, в каких случаях использовать INNER, когда LEFT JOIN. И как определить какое название таблицы нужно писать первой, а какую второй: from products join categories или from products join categories
Пересмотрите ещё раз, в ролике всё это есть
Не знаю почему, но у меня выводит на одну строчку больше. Не так, как в видео.
select product_name, units_in_stock, contact_name, phone
from products
join suppliers using(supplier_id)
join categories using(category_id)
where category_name in ('Beverages','Seafood') and discontinued != 1 and units_in_stock < 20;
@@ВячеславСолодов-р3в у меня также и данные немного отличаются. Может быть база поменялась))
Аналогичная история:
SELECT product_name, units_in_stock, contact_name, phone FROM products
JOIN categories USING(category_id)
JOIN suppliers USING(supplier_id)
WHERE category_name IN ('Beverages', 'Seafood') AND discontinued = 0 AND units_in_stock < 20
ORDER BY units_in_stock
уже думал, что у меня беда с головой
у меня одного пишет отношение не существует?
Понятны типы JOINов, объедиение нескольких таблиц, группирование, комбинирование фильтров по цене, количеству и т.д.
Но непонятны порядок и действия по столбцам с orders.emploee_id и остальных после ON, особенно когда в SELECT другие столбцы непонятно как они взаимодействуют emploees.emploee_id и другими id.
Все происходит благодаря тому самому внешнему ключу (FOREIGN KEY). Зависимая таблица привязана к первичному ключу (как правило) в главной таблице через внешний ключ, что и позволяет достать какие-то данные :) То есть внешний ключ - это вроде указания на связь с другой таблицей, потому что данные почти всегда связаны между собой.
@@ZZZMerk Ок. Буду пробовать работать с ними.
39:52
Забавно. В разделе про рекурсивное соединение отсутствует рекурсия напрочь))) join между одной таблицей никакого отношения к рекурсии не имеет...
Странное описание. А там словами говорится в самом ролике что это имеет отношение к рекурсии?
@@EngineerSpock Вот именно что не говорится, а в описании написано про рекурсию. Рекурсивное соедиенение это когда можно по заданному элементу получить все родительские, например. В sql server это при помощи CTE реализуется.
@@alexzzy3461 верно. Оч странно. Надо поправить)))
Я всё. К этому и уроку я всё. Увы. 😢
Кто-нибудь объясните в чем ошибка этого решения в 1-й задаче из ДЗ
SELECT customers.company_name, first_name || ' ' || last_name AS full_name
FROM customers, employees, shippers
WHERE (customers.city = 'London' AND employees.city = 'London') AND shippers.company_name = 'Speedy Express'
а где ты потерял данные для orders? там же по факту весь запрос строится от заказов
Спасибо за видео! Хотела уточнить: мы когда заменили на 49 минуте видео ON... на USING, то я не поняла момент. А именно: JOIN соединяет последовательно таблицы (при использовании USING)? (Т к при использовании ON мы явно задавали какие столбцы каких таблиц соединяли, а в USING только имя атрибутов (столбиков))
Домашние задания очень трудные
В слове AS самое главное не сказать задница случайно. Так лучше "эз" сказать (з - очень краткое), а то и "аз" вообще чтобы наверняка 😄. Курс классный 👍
можно не мучаться и говорить "элиас"
Всё равно в ад, но хоть с отдельным котлом.
Кто куда зачем?)
@@EngineerSpock 51:33, рассказываете про то, что нельзя использовать natural join. И большое спасибо за уроки!
Данный курс на RUclips - сильно укороченная (демо) версия полного курса, который вы можете приобрести на stepik (с карточкой из РФ) или Udemy (с карточкой не из РФ)
Купить полный курс на stepik:
www.engineerspock.com/buy-postgres-youtube-stepik - получите скидку 30%
Купить полный курс на udemy:
www.engineerspock.com/buy-postgres-youtube-udemy
Все курсы от EngineerSpock: www.engineerspock.com/offer-spock-youtube
*****
Подпишись на канал в Telegram: t.me/engineerspock_it
Подписка на Boosty: boosty.to/engineerspock
Донаты на развитие: pay.cloudtips.ru/p/1f080f72
Чат в Telegram: t.me/python_devs
Ссылка на репозиторий в GitHub: github.com/EngineerSpock/postgres-course-ru
*****
нахер такие длинные запросы новичку, не понимаю.
Вы длинных запросов не видели. Это как раз уровень новичка
39:40 Не в укор автору (может это есть в более поздних уроках), похоже SELF JOIN'ом действительно называют разовый джойн на саму себя, но странно, что этот запрос называют иерархическим и рекурсивным. Рекурсии то нет =\. Ведь тут только два уровня - нулевой (сотрудник) и первый (его шеф). Логичным было бы получить полный путь от помощника уборщика до главы корпорации. В Оракле это решается через CONNECT BY. Здесь, похоже, подобное решается через CTE (WITH). Что-то вроде (не тестил, т.к. у нас в учебной бд менеджер не указан):
WITH RECURSIVE tree AS (
SELECT employee_id, name, manager_id, 1 AS level
FROM employees
WHERE manager_id IS NULL -- Выбираем главу компании
UNION ALL
SELECT e.employee_id, e.name, e.manager_id, t.level + 1
FROM employees e
JOIN tree t ON t.employee_id = e.manager_id
)
SELECT employee_id, name, level
FROM tree
ORDER BY level, name;
Запрос выводит главу компании, потом его ближайших подчиненных, потом подчиненных этих подчиненных и т.д. до последнего дворника. Или вот другой прикол - генерация числовой последовательности (можно и рандомной, тогда во второй столбец рандомные числа пихаем). Этот запрос проверил:
WITH RECURSIVE tree AS (
SELECT 1 AS level
UNION ALL
SELECT t.level + 1
FROM tree t
WHERE level
Кстати, это уже явно выходит за область курса (в отличии от предыдущего моего коммента), но очень советую всем, кто идет по этому курсу, поинтересоваться в качестве факультатива какие именно бывают джойны в плане алгоритма реализации. Сегодня этот вопрос на собесе в лёгкую прилетает даже джунам и это входит в минимум. Возможно его автор поднимет позже, когда дойдет до планов запроса, но раз уж это урок про джойны, то вскользь упомянуть стоит. Запрос в гугл "Nested Loop Join, Hash Join, Merge Join, Index Join".
Код таблицы и данных для темы SELF JOIN:
CREATE TABLE employee (
employee_id INT PRIMARY KEY,
first_name VARCHAR (255) NOT NULL,
last_name VARCHAR (255) NOT NULL,
manager_id INT,
FOREIGN KEY (manager_id) REFERENCES employee (employee_id)
);
INSERT INTO employee (employee_id, first_name, last_name, manager_id)
VALUES
(1, 'Windy', 'Hays', NULL),
(2, 'Ava', 'Christensen', 1),
(3, 'Hassan', 'Conner', 1),
(4, 'Anna', 'Reeves', 2),
(5, 'Sau', 'Norman', 2),
(6, 'Kelsie', 'Hays', 3),
(7, 'Tory', 'Goff', 3),
(8, 'Salley', 'Lester', 3);
CREATE TABLE employee (
employee_id INT PRIMARY KEY,
first_name VARCHAR (255) NOT NULL,
last_name VARCHAR (255) NOT NULL,
manager_id INT,
FOREIGN KEY (manager_id) REFERENCES emlpoyee (employee_id)
); здесь мне говорит что такой таблицы нет
я в место employee написал emlpoyee и 3 день искал что здесь не так и по 15 вариаций писал этот запрос ))))))))))))))))))))
Спасибо