9 мая 2011 г. 21:10 пользователь Artem Chuprina <r...@ran.pp.ru> написал:
> Думаю, это не принципиально, можно придумать ситуацию, когда запись таки > > должна появиться. Например, если подобное поле в таблице не одно, а их > > больше, и в другом поле за сегодня существует некое число. > > Можно придумать ситуацию, когда такая _оптимизация_ оправдана. А ситуацию, > когда запись таки _должна_ появиться, придумать нельзя. > Хорошо - есть таблица людей, где есть поле "серия паспорта", но некоторые из людей еще не имеют его по возрасту. Надо для каждого атрибута заводить отдельную таблицу пересечений - из-за того, что атрибут у кого-то может просто _отсутствовать_? > Потому что ... представь себе ситуацию, когда тебе нужно посчитать среднюю > минимальную температуру за месяц. Если у тебя в месяце было три дня, когда > никто в отделении не лежал. Задача поставлена корректно, имеет вполне > понятное решение. Нет, для таблицы температура вычисляется не средняя "за месяц", а средняя на дискретном множестве записей. Как будем лечить, если у тебя есть поле типа float с > возможным null? Будем писать "and minTerm is not null"? А если нужно в > том > же запросе выдать еще и агрегат по другому полю, которое в эти дни было не > null? Писать самопальный average? Хотя штатный average наверняка null'ы > игнорирует, как и нужно для этой задачи... > Полагаю, что не только average игнорирует, а вообще любая функция в SQL, равно как и все условия после WHERE. IS NULL означает отсутствие данных атрибута в этой записи, что автоматически выкидывает ее из отбора по любому условию для этого атрибута - если явно не указано условие IS NULL. > > Спор, если я правильно понял, шел о том, можно ли значений типа NULL (или > > undef) вообще избежать, не только в БД. В таком случае мне неясно, что > > должна возвращать функция min() для пустого множества. > > Функция min для пустого множества должна возвращать ошибку тем или иным > способом. > Да, тут принимаю. Тимур.