По tblRegions строю дерево и в дополнительных полях хочу иметь статистику по tblObjavas для каждого IDRegion.
Собираю статистику по таблице тремя запросами по каждой записи, получается медленно - избыточные операции с базой
Код: Выделить всё
pFIBQuery->SQL->Clear();
pFIBQuery->SQL->Add("select COUNT(*) as Cnt from tblObjavas where IDRegion = :Parent");
pFIBQuery->ParamByName("Parent")->AsInteger = data.id;
pFIBQuery->ExecQuery();
data.statistic.count = pFIBQuery->FieldByName("Cnt")->AsInteger;
...
pFIBQuery->SQL->Clear();
pFIBQuery->SQL->Add("select COUNT(*) as Cnt from tblObjavas where IDRegion = :Parent and IDState = 1");
pFIBQuery->ParamByName("Parent")->AsInteger = data.id;
pFIBQuery->ExecQuery();
data.statistic.active = pFIBQuery->FieldByName("Cnt")->AsInteger;
...
pFIBQuery->SQL->Clear();
pFIBQuery->SQL->Add("select first 1 DateTime from tblObjavas where IDRegion = :Parent order by DateTime desc"); //а может MAX использовать?
pFIBQuery->ParamByName("Parent")->AsInteger = data.id;
pFIBQuery->ExecQuery();
data.statistic.date = pFIBQuery->FieldByName("DateTimeRefresh")->AsDateTime;
Требуется получить кол-во записей на конкретный IDRegion, количество активных записей на регион, дата последнего внесения записи.
Записи (все) из tblObjavas на клиента не тащу, открываю по мере надобности, поэтому на клиенте обработать не могу.