Характерные ошибки при решении задач на написание запросов на выборку (SELECT)База данных «Корабли»Упражнение 151 стр. 3 |
||
Во втором из объединяемых запросов решения 3.5.2 используется специфическая для Cистема управления реляционными базами данных (СУБД), разработанная корпорацией Microsoft. Язык структурированных запросов) — универсальный компьютерный язык, применяемый для создания, модификации и управления данными в реляционных базах данных.
SQL Server функция DATEPART. Она необходима, так как из даты сражения (поле date имеет темпоральный тип данных — datetime) нужно извлечь год сражения; в противном случае предикат.
Чтобы оставаться в рамках стандарта, можно было бы использовать следующий предикат:
Тогда неявное преобразование типа дало бы нужный результат. Опять проверим: что дает
Естественно, правильным будет и предикат, содержащий полную дату начала 1941 года (1 января):
Однако вернемся к нашему решению. Оно неверно. Как было сказано, здесь не учитывается ситуация, когда головной корабль присутствует только в Ships, и год его спуска на воду неизвестен. Учесть эту ситуацию можно, добавив к объединению еще один запрос. |