![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Есть две таблицы (ClientDataSet). Первая, назовём её (FIOT) с первичным ключом (ID) и тектовым
полем (Fio)- где записываются фамилии. Вторая, назавём её (SUMT) c ключевым полем (FIOID), куда записываются числовые данные из поля (ID) таблицы (FIO), второе числовое поле (SUM), где находятся суммы по кождой фамилии из первой таблицы. Каждая фамилия имеет много строк из таблицы (SUMT). Нужно посчитать суммы по каждой фамилии и вывести этот результат в ListBox. Запросы в этих таблицах не работают. |
|
#2
|
||||
|
||||
|
Код:
select a.foo, bar.sum from table a, (select sum(c.field) sum from table2 c where c.user=a.ID) bar Последний раз редактировалось M.A.D.M.A.N., 26.12.2012 в 13:56. |
|
#3
|
|||
|
|||
|
Спасибо большое но В этих таблицах запрос не работает.
|
|
#4
|
||||
|
||||
|
Выложи ER диаграмму своей базы.
Имена таблиц я привел произвольные, в качестве примера. |
|
#5
|
|||
|
|||
|
Код:
procedure TForm1.Button7Click(Sender: TObject);
Var summ: integer;
i : integer;
begin
SumT.Filter:= 'FIOID='+ fiot.FieldByName('ID').AsString;
SumT.Filtered:=true;
summ:=0;
while not SUMT.Eof do
begin
SUMT.Next;
while not fiot.Eof do
Begin
summ:=summ+ SUMT.FieldByName('sob').asinteger;
ListBox1.Items.Add(fiot.FieldByName('Fio').AsString+ ': '+ IntToStr(summ));
fiot.Next;
end;
end;
end;Последний раз редактировалось Admin, 27.12.2012 в 17:01. |
|
#6
|
||||
|
||||
|
ER диаграмму, а не исходник программы.
Подобная схема должна быть: ![]() Или "ER диаграмма? Не, не слышали."? |
|
#7
|
|||
|
|||
|
Где то так
|
|
#8
|
||||
|
||||
|
Чуть позже напишу примерный запрос.
База какая? Напишу по орокловому. |
|
#9
|
|||
|
|||
|
База состоит из двух таблиц (ClientDataSet). Работают они на Midas.DLL.
Это самостоятельные таблицы. И у них нет общей БД. ----------------------------------------------------------------------- Где-то так, но считает сумму только первой записи. В Чём ошибка? Не соображу. procedure TForm1.Button7Click(Sender: TObject); var summa, id: integer; begin listBox1.Clear; FIOT.First; while not FIOT.Eof do begin id:=FIOT.FieldByName('ID').AsInteger; summa:=0; glavt.next; while not glavt.Eof do begin if glavt.FieldByName('FIOID').AsInteger=ID then summa:=summa + glavt.FieldByName('SOB').AsInteger; Glavt.Next; end; listBox1.Items.Add(FIOT.FieldByName('FIO').AsStrin g + ':' + IntToStr(summa)); FIOT.Next; end; end; end. Последний раз редактировалось ZMihail, 27.12.2012 в 20:31. |