Добро пожаловать в переполнение стека!
В будущем, пожалуйста, опубликуйте сводку или создайте операторы таблиц, которые представляют схему таблиц, используемых в ваших запросах, чтобы у нас было достаточно информации, чтобы предоставить больше, чем просто умозрительные ответы. Несмотря на то, что это база данных Adventure Works, вы должны начать свое путешествие с хорошими привычками!
пожалуйста, постарайтесь не публиковать прямые вопросы о заданиях в Интернете, поскольку большинство проверяющих академических заданий вы легко справитесь с плагиатом, главным образом потому, что другие студенты могут видеть ваш пост и поддержку, которую вы получаете от сообщества, что может привести ко всем Вы даете тот же результат.
Запускали ли вы свои запросы? Как вы думаете, результаты верны?
Если результаты ваших запросов верны, то единственной проблемой является "Вы делали какие-либо нулевые проверки" ? Можно сказать, что если ваши результаты дали правильные результаты, значит, вы удовлетворяли критериям, в противном случае вопрос был сформулирован не очень хорошо.
Нулевые проверки можно объединить в 3 шаблона:
Вы напрямую сравниваете с нулем, используя IS NULL
или IS NOT NULL
в своем запросе
Использование синтаксиса JOIN
для работы с данными, которые могут иметь значения NULL.
INNER JOIN
ограничит результаты только записями, которые совпадают в обеих таблицах. Используйте это, если вам нужно пропустить записи, которые имеют null
в поле внешнего ключа.
- Non INNER присоединяется, как
LEFT JOIN
. Это вернет результаты из левой таблицы, даже если в объединенной или правой таблице нет совпадающих записей.
При использовании функций агрегации агрегаты обычно пропускают нулевые значения, COUNT
будет возвращать 0, если все значения равны NULL
, где в качестве других агрегатов, таких как SUM
, MIN
, MAX
, AVG
вернет NULL
, если все значения NULL
Вопрос 1
Очевидно, вы внедрили проверку NULL
, потому что вы оценивали критерии непосредственно в столбце, допускающем значение NULL.
Похоже, ваш ответ на вопрос 1 довольно хороший.
Вопрос 2
Хотя ваш запрос выглядит так, как будто он возвращает поставщиков без продуктов, он также возвращает нулевое значение.
Вам не нужно выводить столбец, чтобы можно было использовать его в критериях фильтра, поэтому удалите COUNT(PP.ProductID) AS 'Products'
, если только вы не получили инструкций по его использованию.
Это проверка NULL
... Что до интерпретации, я думаю, что в этом случае ответ - да. Используя LEFT JOIN
(или соединения OUTER), вы создали набор результатов, который будет иметь поле PP.ProductID
со значением NULL
, если продуктов нет.
Использование Count в критериях фильтрации для этого нулевого столбца и признание того, что Count с нулевым результатом означает, что столбец ProductID был фактически нулевым, означает, что вы оценили нулевую проверку.
Существуют и другие способы запроса тех же результатов, например, использование NOT EXISTS. NOT EXISTS NOT будет прямой нулевой проверкой, потому что NULLABILITY не была оценена напрямую.