![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Запросы и БД! [D7, XP]
Loona © (2007-05-25 01:56:00)Здравствуйте, у меня возник вопрос:
есть БД, по SQL запросу выдает нужные данные - как теперь эти данные,т.е новую таблицу сохранить, чтобы потом можно было работать с ее элементами?? мне нужно найти среднее значение в каждом столбце новой матрицы ( потом значение ячейки - среднее разделить на среднее и уможить на коэффициент и так 10 ячеек по каждому столбцу!!) а потом построить график...Помогите пожалуйста, совсем не получается :(((
Kostafey (2007-05-26 12:48:00) [21]> СУБД, технология доступа ?
Не стоит такие вопросы игнорировать.
Давать русские названия таблицам крайне нежелательно. Или это псевдокод?
Вопрос я к сожалению до конца так и не понял, но попробую
ответить на сколько понял.
А что же я понял? Нужно получить набор данных из 1 записи (на самом деле их
наверняка будет больше, ибо 'where Фамилия like ''%'+EditFIO1.text+'%'),
содержащих 3 поля характеризующих параметры одного пациента, при этом
значение одного из полей должно вычисляться по принципу:
> **значение ячейки минус среднее значение столбца и разделить
> на среднее!!!
Таким образом, принимая во внимание:
> меня интересуют данные выбранные для заданного пациента
> из таблицы "параметры".
Привожу в псевдокоде:
DataModule1.FindQuery.Active:=false;
DataModule1.FindQuery.SQL.Text:=
'select параметры.Необходимое_поле1, параметры.Необходимое_поле2, '+#13#10+
'(параметры.Необходимое_поле3 - ' +#13#10+
' ( ' +#13#10+
' select avg(параметры.Необходимое_поле3) from параметры ' +#13#10+
' )) / ' +#13#10+
' ( ' +#13#10+
' select avg(параметры.Необходимое_поле3) from параметры ' +#13#10+
' ) ' +#13#10+
'from Пациент, исслдование, параметры ' +#13#10+
'where Фамилия like ''%'+EditFIO1.text+'% ' +#13#10+
'and Пациент.Key1 = Исследование.ID_pat ' +#13#10+
'and Исследование.Key1 = параметры.ID_inv ' +#13#10+
DataModule1.FindQuery.Active:= true;
PoiskForm.ShowModal;
Loona (2007-05-25 22:31:00) [22]Вот такой запрос выполняется
DataModule1.FindQuery.Active:=false;
DataModule1.FindQuery.SQL.Clear;
DataModule1.FindQuery.SQL.Add('select*');
DataModule1.FindQuery.SQL.Add('from Пациент, исслдование, параметры');
DataModule1.FindQuery.SQL.Add('where Фамилия like ''%'+EditFIO1.text+'%''');
Datamodule1.FindQuery.SQL.Add('and Пациент.Key1 = Исследование.ID_pat');
Datamodule1.FindQuery.SQL.Add('and Исследование.Key1 = параметры.ID_inv');
DataModule1.FindQuery.Active:= true;
PoiskForm.ShowModal;
Этот запрос выполняется. и получается новая таблица она состоит из 10 строк и 8 столбцов, меня интересуют данные выбранные для заданного пациента из таблицы "параметры".
И там уже с 3-мя столбцами мне нужно работать, считать среднее и т по формуле.
можно ли использовать свойство recordset.fields и тд?????
Германн (2007-05-25 03:18:00) [23]
> Kostafey © (25.05.07 03:12) [8]
Тогда ждём'с автора. Пусть пояснит задачу.
Kostafey (2007-05-25 03:12:00) [24]> И что? Его нельзя никак подвергнуть математической обработке?
>
> Т.е. есть данные, но сделать с ними ничего нельзя?
уху, прогнать по
DataSet.First
wile not DataSet.eof do
begin
DataSet.next
//Сичтаем среднее арифметическое
end
незабывая про
> **значение ячейки минус среднее значение столбца и разделить
> на среднее!!!
заново прогоняем цикл, формируя массив структур (record), состоящих из строк.
И выводим его в StringsList.
По моему не слишком красиво. Куда проще послать новый запрос.
Германн (2007-05-25 03:05:00) [25]
> Kostafey © (25.05.07 02:53) [6]
>
> > TDataSet что-ли?
>
> Вроде того
>
И что? Его нельзя никак подвергнуть математической обработке?
Т.е. есть данные, но сделать с ними ничего нельзя?
Kostafey (2007-05-25 02:53:00) [26]> TDataSet что-ли?
Вроде того
Германн (2007-05-25 02:47:00) [27]
> Нет, нельзя. Это ж в наборе данных.
TDataSet что-ли?
Kostafey (2007-05-25 02:33:00) [28]> А с результатом запроса работать нельзя по условиям задачи?
Нет, нельзя. Это ж в наборе данных. К нему запрос не послать.
Нужно посылать новый запрос, который будет, похоже, включать в
себя текст старого только что посланного запроса.
Я у себя в дипломе эту задачу решил разделением запроса на части
с конструированием конечного варианта в зависимости от задачи.
Несколько веток на эту тему было.
Германн (2007-05-25 02:22:00) [29]
> есть БД, по SQL запросу выдает нужные данные - как теперь
> эти данные,т.е новую таблицу сохранить, чтобы потом можно
> было работать с ее элементами??
А с результатом запроса работать нельзя по условиям задачи?
> мне нужно найти среднее значение в каждом столбце новой
> матрицы
А откуда тут пролезла эта противная матрица, блин? Зови на помощь Нео!
:)
Конец учебного года :(
Kostafey (2007-05-25 02:03:00) [30]Ну-сс. Поехали.
СУБД, технология доступа ?
> новую таблицу сохранить
Вообще CREATE TABLE, но оно точно нужно?
Мжет быть лучше воспользоваться вложенным запросом ?
> потом значение ячейки - среднее разделить на среднее и уможить
> на коэффициент и так 10 ячеек по каждому столбцу!!)
жестко.
> Помогите пожалуйста, совсем не получается :(((
Ветка обещает быть длинной...
Loona (2007-05-25 01:58:00) [31]**значение ячейки минус среднее значение столбца и разделить на среднее!!!