{在不创建临时表的情况下,下面的代码这样可以得到你想要的结果,,不过我用的控件跟你用的控件不同,,我把减到最后的结果放到StringGrid控件里图是运行的结果,左边是数据源,右边的就是你想要的结果,,自已可以算一下}
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, DB, ADODB;
type
TForm1 = class(TForm)
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
ADOQuery2: TADOQuery;
DataSource1: TDataSource;
DataSource2: TDataSource;
DBGrid1: TDBGrid;
StringGrid1: TStringGrid;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type
TData=record
A,B,C:integer;
end;
var
Form1: TForm1;
implementation
{$R dfm}
procedure TForm1FormCreate(Sender: TObject);
var
Data:array of TData;
NewData:array of TData;
i:integer;
begin
SetLength(Data,adoquery1RecordCount+1);
for i := 0 to ADOQuery1RecordCount-1 do
begin
Data[i]A:=ADOQuery1FieldByName('a')AsInteger;
Data[i]B:=ADOQuery1FieldByName('b')AsInteger;
Data[i]C:=ADOQuery1FieldByName('c')AsInteger;
ADOQuery1Next;
end;
SetLength(NewData,high(data)-1);
for i := 0 to High(Data) do
begin
NewData[i]A:=Data[i]A-data[i+1]A ;
NewData[i]b:=Data[i]b-data[i+1]b ;
NewData[i]c:=Data[i]c-data[i+1]c ;
end;
StringGrid1RowCount:=High(NewData)+2;
StringGrid1Cells[0,0]:='A';
StringGrid1Cells[1,0]:='B';
StringGrid1Cells[2,0]:='C';
for i := 0 to High(NewData) do
begin
StringGrid1Cells[0,i+1]:=IntToStr(newdata[i]A);
StringGrid1Cells[1,i+1]:=IntToStr(newdata[i]b);
StringGrid1Cells[2,i+1]:=IntToStr(newdata[i]c);
end;
end;
end
select (to_date(trunc(sydate)||' '||'01:00:00')-trunc(sysdate))2460 from dual;
方法是先把字符串和日期连接起来组成带时间的DATETIME字符串格式再转成DATETIME型,然后就可以处理日期型数据了。
这个就不要在这里问了吧,书本或者百度网页搜就行了。
我就简单的跟你说说吧,
“并”:两张表的数据都合在一起。
“差”:两张表水火不容,有你没我。
“交”:两张表的公共部门。
π是投影,该运算从表中选出指定的属性组成一个新表,记为:πA(R)其中A是属性名(即列名)表,R是表名
σ是选择,该运算按给定的条件,从表中选出满足条件的行形成一个新表,作为一个新表如:σF(R)其中F为条件表达式,R为表名
1 π姓名,家庭地址σ 职务='科长'(职工)
2 π姓名,家庭地址σ 部门部门名称='办公室'∧职工职务='科长'(部门部门编号∞职工所属部门编号)
3 π姓名,家庭地址σ部门名称='财务科'∧职务= '科长'(部门部门编号∞职工所属部门编号)
4 del from 职工 where 职工号='3016'
5 update 保健 set 健康状况='一般' where 职工号='3016'
6 create view 视图名 as selcet from 保健 where 健康状况='差'
这个知识点一般出现在上午题。
这个知识点最为重要,需要多加记忆和理解。其中有 并 、 交 、 差 、 笛卡尔积 、 选择 、 投影 、 连接 、 除 。其中一元运算符只有 选择 和 投影 ,剩余的都是二元运算符。
1、Θ连接运算定义一个关系,它包含R和S的笛卡尔积中所有满足谓词F的元组,其中谓词F是比较运算符(<、≤、>、≥、=、≠)之一。
其中两个运算公示是相等的:
2、自然连接运算对两个关系中所有具有相同名称的属性执行等接运算。自然连接的维数等于关系R与S的维数之和减去X中属性的个数。
3、外连接运算是在连接两个关系时,经常会出现一个关系中某些元组无法在另一个关系中找到匹配元组的情况,换句话说,就是这些元组在连接属性上不存在匹配值。但可能仍希望这些元组出现在结果中,这时就要用到外连接。
4、半连接运算执行了两个关系的连接后,再将结果投影到第一个参与运算的关系的所有属性上。半连接的优点之一就是减少必须参与连接的元组的数目。
关系R和S,他们的元组数相同
则
S是R的真子集,其交集就是S;应该选B
或
R是S的真子集,其交集就是R;应该选D
根据实际,数据R集包含S集,所以选B。
不了解你的R和S具体所指,以上回答,仅供参考。希望对你有帮助
数据库中要进行关系运算必须要有能关联上的条件,比如一个关系中有 R 其中属性是 (名称 年龄 编号 ) 另一个关系 S 中 有(名称 工资 工龄) 等信息 名称是取自同一个域 这样就可以 RS相关联 取出其他属性 对属性进行 *** 作 得到想要的数据,而笛卡尔积 因为没有能关联上的条件 你对两表进行关联之后 数据库默认会进行组合 你得到的结果 将成为 R 中 3个属性 2条记录
S 中三个 属性 2条记录 22种结果 数据完全混乱 所以数据库 *** 作 要杜绝笛卡尔积 这样的结果对数据而言没有任何作用,除了一些没有唯一记录的主键 进行伪造数据
以上就是关于delphi 7 关于数据库数据运算的问题全部的内容,包括:delphi 7 关于数据库数据运算的问题、oracle如何计算系统时间与数据库的时间差(分钟)、关系数据库集合运算的“并”“差”“交”是怎样运算的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)