Здравствуйте!
Поддержка не сможет помочь с вопросами, связанными с теорией или задачам из курса «Системный аналитик» — в этой ситуации рекомендуем вам обратиться к вашему преподавателю в чате в Slack.
Если же у вас возникнут иные вопросы — обязательно пишите, будем рады помочь :)
client был уникальный идентификатор — это первичный ключ. В таблице со счетами invoice тоже было такое поле — оно было внешним ключом, но значения в нём могли повторяться, если один покупатель делал несколько заказов.LEFT OUTER JOIN и LEFT JOIN?INNER JOIN и JOIN, между этими операторами нет разницы. Они объединяют данные по левой таблице, а данные из правой сохранятся только в случае совпадения.SELECT c.last_name,
COUNT(i.total)
FROM client AS c LEFT JOIN invoice AS i ON c.customer_id = i.customer_id; last_name и добавить к ним данные о количестве заказов из таблицы invoice. Но запрос COUNT(i.total) без группировки должен вывести только одно значение — количество записей в поле total. В этом запросе данные двух таблиц не смогут объединиться, и произойдёт ошибка.FULL OUTER JOIN: его используют в том случае, если хотят сохранить данные из обеих таблиц. Если в полях, по которым объединяют таблицы, найдутся соответствия — записи объединятся. Если совпадений не найдётся — на месте отсутствующих значений будет NULL.SELECT t.name,
a.title
FROM album AS a RIGHT JOIN track AS t ON t.album_id = a.album_id; RIGHT OUTER JOIN. Такой тип объединения предполагает, что все записи из правой таблицы войдут в результат слияния. Значит, в итоговой таблице окажутся все треки из таблицы track. Во втором поле окажутся те названия альбомов, для которых есть треки. Если совпадений не будет, на месте названия появится NULL.FULL OUTER JOIN. В этом уроке для объединения использовали поля с похожим названием и содержанием, которые не были внешним или первичным ключами.SELECT e.instituition,
COUNT(DISTINCT c.name)
FROM education AS e INNER JOIN people AS p ON e.person_id = p.id
FULL JOIN company AS c ON c.id = p.company_id
GROUP BY e.instituition
HAVING COUNT(c.name) <> 0; education и people — соединены оператором INNER JOIN. Это означает, что объединение произойдёт по «внутренней» области, общей для двух таблиц. Третья таблица присоединена оператором FULL OUTER JOIN, значит, все данные из этой таблицы войдут в результат слияния. Благодаря условию в HAVING можно оставить в таблице только те учебные заведения, в которых учились сотрудники разных компаний.UNION и UNION ALL?UNION и UNION ALL соединяют таблицы «вертикально». От выбора оператора зависит, останутся ли в итоговой таблице полные дубликаты.Тест пройден!
Поздравляем, можно двигаться дальше.
Тест пройден
11
Всего
вопросов
7
Правильных
ответов