Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помогите с запросом  [new]
rsolanov
Member

Откуда:
Сообщений: 930
Готовлюсь у экзамену и встретил интересный экзаменационный вопрос.
Позиция Микрософт состоит в том, что правильным ответом является пункт B.
Вот имитация запроса:
SET ANSI_NULLS ON;
with Customer
as
(
	select 1 as CustomerID, 'Active' as [Status]
	union
	select 2, 'Active'
	union
	select 3, 'Inactive'
	union
	select 4, NULL
	union
	select 5, 'Dormant'
	union
	select 6, 'Dormant'
)
select * from Customer
where [Status] not in (NULL, 'Dormant')
Но запрос не возвращает ни одной строки. Если SET ANSI_NULLS установить в положение OFF, то запрос выдает именно тот ответ, какой Микрософт считает за правильный. Но по умолчанию принято SET ANSI_NULLS устанавливать в положение ON. Как видно, в самом вопросе к тесту ничего не говорится об значении установки ANSI_NULLS. Получается так что верный ответ в данном случае весьма относителен и на основе чего я должен выводить решение о верном ответе, если сам вопрос задан некорректно, то есть в нем для принятия верного решения не хватает данных?

К сообщению приложен файл. Размер - 113Kb
28 авг 12, 12:45    [13075207]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
aleks2
Guest
На солнце тоже есть пятна.
28 авг 12, 12:50    [13075257]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
rsolanov
Member

Откуда:
Сообщений: 930
Если обратиться к MSDN, то в статье говориться, что:
В будущей версии Microsoft SQL Server эта возможность будет удалена. Избегайте использования этой возможности в новых разработках и запланируйте изменение существующих приложений, в которых она применяется.
То есть сама Микрософт считает переопределение значения параметра ANSI_NULLS, отличного от стандартного идейно неверным, что несовместимо со стандартом SQL-92, но при этом, в правильном ответе на экзаменационный вопрос руководствуется положением что все-таки SET ANSI_NULLS OFF.

Это выглядит примерно так, если бы в школе, на экзамене по математике все учащиеся решили задачу правильно, а им преподаватель говорит что все неверно, поскольку в условии этой задачи имеется в виду, что "+" это на самом деле "-" и "8" это на самом деле "10", но об этом вы узнаете только после сдачи самого экзамена при получении оценки ))
28 авг 12, 14:13    [13076051]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Вот такие загадочные экзамены у Microsoft.
28 авг 12, 14:14    [13076064]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3059
rsolanov
Готовлюсь у экзамену и встретил интересный экзаменационный вопрос.
Позиция Микрософт состоит в том, что правильным ответом является пункт B.
Вот имитация запроса:
SET ANSI_NULLS ON;
with Customer
as
(
	select 1 as CustomerID, 'Active' as [Status]
	union
	select 2, 'Active'
	union
	select 3, 'Inactive'
	union
	select 4, NULL
	union
	select 5, 'Dormant'
	union
	select 6, 'Dormant'
)
select * from Customer
where [Status] not in (NULL, 'Dormant')
Но запрос не возвращает ни одной строки. Если SET ANSI_NULLS установить в положение OFF, то запрос выдает именно тот ответ, какой Микрософт считает за правильный. Но по умолчанию принято SET ANSI_NULLS устанавливать в положение ON. Как видно, в самом вопросе к тесту ничего не говорится об значении установки ANSI_NULLS. Получается так что верный ответ в данном случае весьма относителен и на основе чего я должен выводить решение о верном ответе, если сам вопрос задан некорректно, то есть в нем для принятия верного решения не хватает данных?


а с чего Вы решили, что это позиция MS?
это скрин сдачи экзамена некоего человека, который так ответил на этот вопргос и видать "случайно" сдал
28 авг 12, 14:17    [13076087]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
denis2710
Member

Откуда: Москва
Сообщений: 3384
HandKot,+1
это не правильный ответ.МС в экзаменах подробно пишет вопросы,если что-то выставлено не по дефолту это указывается.
28 авг 12, 14:26    [13076172]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
rsolanov
Member

Откуда:
Сообщений: 930
denis2710
HandKot,+1
это не правильный ответ.МС в экзаменах подробно пишет вопросы,если что-то выставлено не по дефолту это указывается.
Где в данном случае это указание?
28 авг 12, 15:14    [13076694]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3059
вроде как для каждого экзамена идет описание предметной обрасти на несколько страниц, скорее всего там и должно быть все
28 авг 12, 15:39    [13076953]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
rsolanov
Member

Откуда:
Сообщений: 930
HandKot
вроде как для каждого экзамена идет описание предметной обрасти на несколько страниц, скорее всего там и должно быть все
А где его можно найти? Я впервые об этом слышу. Для меня это очень важно, пожалуйста, скиньте ссылку...
28 авг 12, 16:36    [13077471]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
denis2710
Member

Откуда: Москва
Сообщений: 3384
rsolanov
Где в данном случае это указание?

В данном случае его и нет,потому что по умолчанию ANSI_NULLS ON;
BOL
Внимание!
Для любых значений NULL, возвращаемых в полях subquery или expression, которые сравниваются со значением test_expression с помощью предложения IN или NOT IN, возвращается результат UNKNOWN. Использование значений NULL с предложениями IN или NOT IN может привести к непредвиденным результатам.

28 авг 12, 16:43    [13077536]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
rsolanov
Member

Откуда:
Сообщений: 930
Выходит что и сам запрос, представленный на экзаменационном вопросе некорректный в принципе.
28 авг 12, 17:58    [13078131]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Glory
Member

Откуда:
Сообщений: 104751
rsolanov
Выходит что и сам запрос, представленный на экзаменационном вопросе некорректный в принципе.

ИМХО
Никогда не относитесь к таким вопросам, как к решению _реальных_ задач.
Ситуации _искусственно_ моделируются для проверки знаний в определнной области.
В данном случае проверялось ваше знаение о сравнении выражений в троичной логике.
А не знание того, какие настройки по-умолчанию у коннекта.
28 авг 12, 18:06    [13078175]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
rsolanov
Member

Откуда:
Сообщений: 930
Glory
rsolanov
Выходит что и сам запрос, представленный на экзаменационном вопросе некорректный в принципе.

ИМХО
Никогда не относитесь к таким вопросам, как к решению _реальных_ задач.
Ситуации _искусственно_ моделируются для проверки знаний в определнной области.
В данном случае проверялось ваше знаение о сравнении выражений в троичной логике.
А не знание того, какие настройки по-умолчанию у коннекта.
Думаю все бы хорошо, если бы ни этот NULL в запросе.
28 авг 12, 18:12    [13078200]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3059
rsolanov
Выходит что и сам запрос, представленный на экзаменационном вопросе некорректный в принципе.

опять же ИМХО
MS никогда не выложит вопросы для экзаменов и тем более ответы в общее пользование.
То, что у Вас есть - результат сдачи экзамена некоторым человеком, который между прочим, нарушил правило о фото-видео съемке.

Это к тому, почему Вы решили что ответ В -
rsolanov
Микрософт считает за правильный
29 авг 12, 08:36    [13079620]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
HandKot
rsolanov
Выходит что и сам запрос, представленный на экзаменационном вопросе некорректный в принципе.

опять же ИМХО
MS никогда не выложит вопросы для экзаменов и тем более ответы в общее пользование.
То, что у Вас есть - результат сдачи экзамена некоторым человеком, который между прочим, нарушил правило о фото-видео съемке.

Это к тому, почему Вы решили что ответ В -
rsolanov
Микрософт считает за правильный
+100500
И правильный ответ - A
Иначе было бы неинтересно!
29 авг 12, 09:08    [13079701]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
rsolanov
Member

Откуда:
Сообщений: 930
Уважаемый iap, уж вы то...
Зеленым отмечается всегда правильный ответ и экзамен этот я не сдавал, а только готовлюсь к нему.
29 авг 12, 09:25    [13079778]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
rsolanov
Уважаемый iap, уж вы то...
Зеленым отмечается всегда правильный ответ и экзамен этот я не сдавал, а только готовлюсь к нему.
А что я-то?!
Если во множестве IN() есть хоть один NULL, то не вернётся ни одной строки (для SET ANSI_NULLS ON).
Это все знают.

Если какой-то Microsoft говорит "B", это же не повод отвечать неправильно!
Некоторые в такой же ситуации шли на костёр!
29 авг 12, 09:47    [13079906]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
Но, справедливости ради, внизу написано "Select the best choice".
То есть, выбор должен быть необязательно правильным, но обязательно лучшим!
Может, "B" и лучше, чем "A", кто знает! :))
29 авг 12, 09:56    [13079968]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить