Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > глупый вопрос


Автор: AKN 11.1.2006, 15:39
Есть некая таблица вида:

1 А =
2 В -
3 А =
4 А =
5 В %
6 В %
7 А -
8 В %
9 С =

... ... ...

(чисто условно)
1. Получить бы запрос сколько в поле 2 содержится записей "В", сколько "А", "С" и т.д. Логика подсказывает что нужно использовать оператор Count, но как это сделать на практике? Заранее всем благодарен. Может кто подскажет пару ссылок на литературу по запросам, т.к. существующая у меня не подходит...

Автор: Vit 11.1.2006, 16:28
Код

Select count(*), Field2 From MyTable Group by Field2


Автор: offline 11.1.2006, 19:41
а в Аксесе можно так извратиться smile


Код

SELECT Count(Поле1) AS [Count-Id], Left(Поле2,1) AS Gruppirovka
FROM Таблица
GROUP BY Left(Поле2,1)
HAVING (((Left(Поле2,1))="A")) OR (((Left(Поле2,1))="B")) OR (((Left(Поле2,1))="C"));

Автор: AKN 12.1.2006, 11:31
Спасибо, все заработало ( я имею ввиду
Цитата
Select count(*), Field2 From MyTable Group by
), но подчитать бы как это все работает....

Автор: AKN 12.1.2006, 16:14
Код

Select count(*), Field2 From MyTable Group by Field2


а как сделать вывод количества не по всему полю, а допустим, только по записям, где поле №3 равно "="?

Автор: offline 12.1.2006, 16:26
А какя хоть база?

добавь

Код

WHERE поле3 = "="

Автор: Vit 12.1.2006, 16:27
Цитата(AKN @ 12.1.2006, 02:31 Найти цитируемый пост)

но подчитать бы как это все работает....



Любой букварь по базам данных, найти главу "Аггрегативные функции"

Автор: AKN 12.1.2006, 17:20
сейчас найду букварь, буду читать, а то сделал типа :

Код

procedure TForm3.Button1Click(Sender: TObject);
var names:string; i:integer;
begin
i:=0;
names:='';
with form1.qzapr do
  begin
  for  i :=0 to ListBox1.Items.Count - 1 do
    begin
    if ListBox1.Selected[i] then
      begin
      names:=names + '"'  + ListBox1.Items[i] + '"' + 'and dat between (' + '"'+ datetostr(DateTimePicker1.date)+'"' + ')' + ' and ('+'"'+datetostr(DateTimePicker2.date)+'"'  +') '  +'or name =  ';
      end;
    end;
   end;
Delete(names, Length(names)-11, 20);
Form1.qzapr.Close;
Form1.qzapr.SQL.Text:='SELECT name,count(*) FROM got where  name = ' + names +'  group by name order by name';
Form1.DataSource1.DataSet:=form1.qzapr;
Form1.qzapr.open;
end;


т.е. весь запрос формируется обычной строкой типа name = "Иванов И.И." and date between (дата1) and (дата2) - тупо, но вроде работает...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)