主: 现在有很多的表,一个主表,有很多的分表,主表中有4-5个字段都只是数字代替的,并不是实际的值,实际的值在那些分表中有
Table1(sid sname ssex sage saddress smobile sschool)
Table2(sid saddress)
Table3(sid smobile)
Table4(sid sschool)
就像这样的,现在要想查询,是很简单的,现在我想插入进去到主表中,应该怎么去插入?要使用几个DataSet或者要几个Query才能做到插入新的数据后能查询到?要怎么插入?
数据:
Table1
1 Klaymen 男 19 1 1 1
2 Mary 女 21 2 2 2
3 Billy 男 24 3 3 3
Table2
1 中国
2 美国
3 日本
Table3
1 130********
2 152********
3 184********
Table4
1 中国大学
2 美国武术学校
3 东京大学现在要查询好办,但是插入要怎么做才能查询的到新插入的?
还有,怎么插入新的数据到主表中?还能正确的查询到。
Table1(sid sname ssex sage saddress smobile sschool)
Table2(sid saddress)
Table3(sid smobile)
Table4(sid sschool)
就像这样的,现在要想查询,是很简单的,现在我想插入进去到主表中,应该怎么去插入?要使用几个DataSet或者要几个Query才能做到插入新的数据后能查询到?要怎么插入?
数据:
Table1
1 Klaymen 男 19 1 1 1
2 Mary 女 21 2 2 2
3 Billy 男 24 3 3 3
Table2
1 中国
2 美国
3 日本
Table3
1 130********
2 152********
3 184********
Table4
1 中国大学
2 美国武术学校
3 东京大学现在要查询好办,但是插入要怎么做才能查询的到新插入的?
还有,怎么插入新的数据到主表中?还能正确的查询到。
难道我就
Insert into Table1(sname,ssex,sage,saddress,smoblie,sschool) values
('张三','男',21,4,4,4,4)
就这样插入主表吗?
如果那些4再别的表中没有要添加的话,是不是要再添加一个TADOQuery去添加别的关联表中的4是什么再Insert into Table1(...) values ('张三','男',21,4,4,4,4)就可以了?
代码表是事先准备好的,包含所有的信息,插入数据表之前,根据相因代码表得出每个字段的代码。
Insert into Table1(...) values ('张三','男',21,'中国',13787628768,'加理敦学校')
这样写可以吗?我后面关联的字段不写关联的代码,直接写具体的值是可以的?前提是代码表中有相应的字段和我现在插入的对应就可以了?2.还有,在SQL查询分析器中关联表查询是要Inner join...on的,但是在Delphi代码里那个TADOQuery.SQL.ADD()里面SQL语句可以不用写Inner join...on也能查询出来?我原来见过一个SQL语句,那个数据表想查询出来,关联了很多表:
whith ADOQuery do
SQL.Add('select t.sname,t.sex,t.address,t.age,t1.ssource,t1.srecord from t,t1 where t.scode = t1.sid and t2.sname = t.sname');
ExecSQL;
好像是这样写的SQL语句,这样的语句明显是关联表查询,它没有使用Inner join ...on但是能查询出来,使用了很多TADOQuery,有的是Insert不同的表的,在Delphi中关联表查询的SQL语句可以不用写的像SQL分析器中那样有Inner join的吗?
Insert into Table1(...) values ('张三','男',21,'中国',13787628768,'加理敦学校')
这样写可以吗?我后面关联的字段不写关联的代码,直接写具体的值是可以的?前提是代码表中有相应的字段和我现在插入的对应就可以了?
答:这样不可以,代码表中的数据是你事先准备好的。比如国家代码表中所有的国家都是你事先添加进去的。2.还有,在SQL查询分析器中关联表查询是要Inner join...on的,但是在Delphi代码里那个TADOQuery.SQL.ADD()里面SQL语句可以不用写Inner join...on也能查询出来?我原来见过一个SQL语句,那个数据表想查询出来,关联了很多表:
whith ADOQuery do
SQL.Add('select t.sname,t.sex,t.address,t.age,t1.ssource,t1.srecord from t,t1 where t.scode = t1.sid and t2.sname = t.sname');
ExecSQL;
好像是这样写的SQL语句,这样的语句明显是关联表查询,它没有使用Inner join ...on但是能查询出来,使用了很多TADOQuery,有的是Insert不同的表的,在Delphi中关联表查询的SQL语句可以不用写的像SQL分析器中那样有Inner join的吗?
答:select t.sname,t.sex,t.address,t.age,t1.ssource,t1.srecord from t,t1 where t.scode = t1.sid and t2.sname = t.sname 这样的写法也是一种连接,inner join 只是连接中的一种而已,写法有很多种,但达到的目的都是一样的。TADOQuery
倒是不用很多个,因为一个TADOQuery对应的是一个数据库实例,这个实例包含了这个实例下的所有表(前提是你所用的用户拥有这个实例全部表的权限)。
select t.sname,t.sex,t.address,t.age,t1.ssource,t1.srecord from t,t1 where t.scode = t1.sid and t2.sname = t.sname
还有插入数据表的时候,实际上插入不能插入实际的值,只能插入代码表的代码,具体的值是在代码表中的。
with TADOQuery do
SQL.Add('select * from Table2 where saddress=' + Edit1.Text);
ExecSQL;
end;
if TADOQuery.RecourdCount <> 0
MessageBox.Show('Edit1.Text输入的值在代码表中存在');
with TADOQuery do
SQL.Add('insert into Table1(...) values ('张三','男',23,TADOQuery.FiledByName('sid').asstring,...))');
ExecSQL;
else
MessageBox.Show('Edit1.Text输入的值在代码表中不存在');
就像这样的,正真插入进去的,不是实际的地址,是那个代码表中实际地址对应的sid,我就在那里写了
TADOQuery.FiledByName('sid').asstring就能插入,楼上说的是不是这个意思?
答:对,你可以这么理解!
楼上说的是不是这个意思?
答:是的!就是这个意思!呵呵~