Форум: "Базы";
Текущий архив: 2004.03.14;
Скачать: [xml.tar.bz2];
ВнизКол-во записей или как сделать count (select * ...)? Найти похожие ветки
← →
off (2004-02-17 11:39) [0]Доброго времени суток, уважаемые мастера. Передо мной стоит задача из книги покупок сосчитать какое колво клиентов закупалось в опред. период в опред. отделе. Для этого пишем нехитрый SQL запрос
Select nd.codenach from nachdec ND
where
(ND.codetypelgot = :codetypelgot)
and
(ND.frdate >= :frdate)
and
(ND.todate <= :todate)
group by ND.codenach
Врезультате получим 8 записей, но это я в ручную считаю, что 8, а как это сделать программно?
← →
Reindeer Moss Eater (2004-02-17 11:42) [1]Врезультате получим 8 записей, но это я в ручную считаю, что 8, а как это сделать программно?
Result:=0;
while not eof do
begin
Inc(Result);
Next;
end;
← →
panov (2004-02-17 11:42) [2]Select COUNT(*) from nachdec ND
where
(ND.codetypelgot = :codetypelgot)
and
(ND.frdate >= :frdate)
and
(ND.todate <= :todate)
group by ND.codenach
← →
Reindeer Moss Eater (2004-02-17 11:47) [3]Select nd.codenach from nachdec ND
where
(ND.codetypelgot = :codetypelgot)
and
(ND.frdate >= :frdate)
and
(ND.todate <= :todate)
group by ND.codenach
← →
off (2004-02-17 11:47) [4]re [2]:
Дело в том что человек мог совершать не одну покупку, немного поясню (ND.codetypelgot - отдел, ND.codenach - код покупателя)
А так как у каждого покупателя он свой, то в результате вылазят все теже 8 строчек с количеством купленного товара по каждому покупателю :-)
← →
Reindeer Moss Eater (2004-02-17 11:48) [5]Select nd.codenach from nachdec ND
where
(ND.codetypelgot = :codetypelgot)
and
(ND.frdate >= :frdate)
and
(ND.todate <= :todate)
group by ND.codenach
Врезультате получим 8 записей, но это я в ручную считаю, что 8, а как это сделать программно?
Сильно сомневаюсь, что получим больше одной записи при таком запросе.
← →
Карелин Артем (2004-02-17 11:49) [6]А нормально расписать что к чему в базе слабо?
← →
Соловьев (2004-02-17 11:59) [7]если юзать FIBPlus , то там есть метод RecordCountFromSrv
← →
off (2004-02-17 12:03) [8]to [6]
В общем то ничего интересного
frdate - дата начала закупок
todate - дата окончания закупок
codetypelgot - база, отдел (где произведена покупка)
codenach - заводится для каждой закуки клиента
codedec - заводится для каждого типа товара
Есть еще куча несущественных для данного вопроса полей типа суммы и количество товара
← →
Exciter (2004-02-17 12:09) [9]Передо мной стоит задача из книги покупок сосчитать какое колво клиентов закупалось в опред. период в опред. отделе
см. panov
или группировку не по одному полю сделай.
← →
Карелин Артем (2004-02-17 12:09) [10]Если codenach уникально для каждого клиента, а каждая строка означает одну покупку, то
Select codenach, count(codenach) from nachdec ND
where
(ND.codetypelgot = :codetypelgot)
and
(ND.frdate >= :frdate)
and
(ND.todate <= :todate)
group by ND.codenach
← →
off (2004-02-17 12:10) [11]to [7]:
А что делать тем у кого FIBMinus и всем прочим?
← →
Плохиш (2004-02-17 12:13) [12]
Врезультате получим 8 записей, но это я в ручную считаю, что 8, а как это сделать программно?
Если надо получить число 8, то убери в [2] group by ...
← →
Карелин Артем (2004-02-17 12:15) [13]Извиняюсь за прогон, не сразу вкурил в ТЗ.
← →
off (2004-02-17 12:16) [14]to [10]:
В том то и дело, что не одна строка, а несколько может быть
← →
Guest (2004-02-17 12:26) [15]select count(distinct codenach)
from ...
не подходит?
← →
off (2004-02-17 12:44) [16]to [15]:
Моё почтение. Молодец. Видимо сегодня действительно понедельник и я совсем про DISTINCT забыл :-)
← →
Guest (2004-02-17 12:50) [17]Бывает. Но только сегодня вторник :)
← →
Карелин Артем (2004-02-17 12:52) [18]Guest (17.02.04 12:50) [17]
У меня сегодня первый рабочий день в неделе. Будем считать его понедельником. :)
← →
Guest (2004-02-17 12:54) [19]Я не против :)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.03.14;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.03 c