> > Думаю, это не принципиально, можно придумать ситуацию, когда запись таки > > > должна появиться. Например, если подобное поле в таблице не одно, а их > > > больше, и в другом поле за сегодня существует некое число. > > > > Можно придумать ситуацию, когда такая _оптимизация_ оправдана. А ситуацию, > > когда запись таки _должна_ появиться, придумать нельзя. > > > > Хорошо - есть таблица людей, где есть поле "серия паспорта", но некоторые из > людей еще не имеют его по возрасту. Надо для каждого атрибута заводить > отдельную таблицу пересечений - из-за того, что атрибут у кого-то может > просто _отсутствовать_?
Примерно. Потому что через некоторое время ты с удивлением узнаешь, что некоторые люди, оказывается, вместо паспорта имеют (и используют!) удостоверение личности с совершенно другой нумерацией, некоторые другие - загранпаспорт, причем совсем не обязательно российский, а некоторые третьи - более одного паспорта, и могут придти с любым. > > Потому что ... представь себе ситуацию, когда тебе нужно посчитать среднюю > > минимальную температуру за месяц. Если у тебя в месяце было три дня, когда > > никто в отделении не лежал. Задача поставлена корректно, имеет вполне > > понятное решение. > > Нет, для таблицы температура вычисляется не средняя "за месяц", а средняя на > дискретном множестве записей. Задача ставится так, как я сказал. Заказчиком. Дословно. > Как будем лечить, если у тебя есть поле типа float с > > возможным null? Будем писать "and minTerm is not null"? А если нужно в > > том > > же запросе выдать еще и агрегат по другому полю, которое в эти дни было не > > null? Писать самопальный average? Хотя штатный average наверняка null'ы > > игнорирует, как и нужно для этой задачи... > > Полагаю, что не только average игнорирует, а вообще любая функция в SQL, > равно как и все условия после WHERE. Это - точно неправда. Условие ее не игнорирует. Условие имеет "булевское значение NULL", если на такое натыкается. А average, если реализована правильно, будет именно что игнорировать. Разница будет заметна, если в одном запросе посчитать average по двум полям, у которых NULL в разных записях. С другой стороны, NULL и, как следствие, average не различает ситуации "значение неизвестно" и "значения нет и быть не должно". А по-хорошему в первом случае average должна выдавать ошибку "не все необходимые данные известны". В то время как во втором должна честно считать среднее по тем записям, у которых это значение есть. -- Что-то я не тем полушарием думаю... -- (С)энта -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/87oc3a3h8q.wl%...@ran.pp.ru