MSSQL Server2000的表关联的问题

来源:百度知道 编辑:UC知道 时间:2024/06/22 07:56:46
现在有两个表,a表中有id,bid,aname,sex列,b表中有id,bname,age列,其中a表的bid关联b表的id
我想用insert语句写入a表,
insert into a (bid) select id from b where a.aname=b.bname
但是sex在什么时候写入呢?
请高手赐教,我刚开始学数据库,有点麻烦
其实我主要要问的是:
如果要用insert语句插入一条记录,其中一项是从别的表关联过来的,怎么才能实现?比如
a表中有id,bid,aname,sex列,bid是对应b表的id的,怎么才能bid和name都写入a表?
__________________________________-
也就是说,a表只能是b表的一个子表?a就不能有不同于b的列啦?

insert
into a(bid,aname)
select id,bname
from b;
由于a表和b表的结构并不完全一样,所以在通过子查询插入a表时,必须指明所要插入的字段名,并且要求所插入的字段类型和a表指定的字段类型匹配.
对于a表有而b表中不存在的字段,不能通过字查询来插入,只能另写插入元组来实现了.如:insert into a(sex) values('male') where id='对应列值';且必须指明插入到a表的sex字段。

--------------------------------
我想用insert语句写入a表,
insert into a (bid) select id from b where a.aname=b.bname
但是sex在什么时候写入呢?
--------------------------------
你要把sex也写入表中,那你的b表中无sex这个字段啊?
如果要把sex也写入表中,那你b表中也得有sex字段
INSERT INTO a ( bid,sex ) SELECT id,sex FROM b WHERE bname='具体值'

可以这样做:
Create Function inserta(
@s varchar(2)
)
return int
as
begin
declare @error int
declare @sex varchar(2)
set @sex = @s
insert into a(bid,sex)
select id,@sex from b where a.aname = b.bname
set @error = @@error
return (@error)
end

似乎没有表达清楚,看了两遍也不知道你想要做什么。