Дело не в арфметике ...
Sergei 06.11.2002 15:28
Да зачем определённые интегралы?
Возьмём тоже не сложный пример: пусть id1 - код форума, id2 - код сообщеня на форуме, x - код родительского сообщения (если x=0, то значит это корневое сообщение). Требуется подсчитать сколько в каждом форуме сообщений, и соответственно сколько в каждом форуме корневых сообщений (x=0). Ну и из спортвного интереса можно ещё подсчитать разницу (см. XXXXX - правда не знаю зачем, но здесь как раз приходится таскать за собой формулы, а таких ситуаций бывает много)
SELECT tab1.id1,
Count(tab1.id2) AS CountALL,
Sum(if(tab1.x, null, 1)) AS CountZero,
Count(tab1.id2) - Sum(if(tab1.x, null, 1)) AS XXXXX
FROM tab1
GROUP BY tab1.id1;
И эти 6 строчек делают то, что на Прасере пришлось бы писать гораздо дольше. А Парсером останется только взять таблицу и пробежаться по ней - что надо вывести.
Зачем писать что-то на Парсере если этим можно заставить заниматься SQL (конечно если на SQL это достаточно не сложно реализовать). SQL специально заточен под поиск и отбор данных! Значит именно он должен заниматься этой работой. Другое дело когда SQL нету, тогда народ начинает изобретать всякую самопальную индыксацию, реализовывать блокировку файлов при многопользовательской работе с ними и т.п.
Но меня интересует принцип, можно или нет использовать в формулах имена вычисляемых полей!!!!?????? Если кто-то точно знает, что нельзя, то так и напишите - я смирюсь :(