日期:2014-05-19  浏览次数:20504 次

新手问题,在线等
初学SQL遇到一些问题,请大家赐教,如果问题太简单,请大家别笑.
问题一:
如果让2个表的数据联系起来,比如说
A表里有
姓名     年龄   编号   成绩
  张         18     001       90
  李         20     002       80
B表里有
编号     成绩
001       90
002       80
现在修改B表里的编号或者成绩,A表也跟着修改,这样的应该怎么做?


问题二:
一个存储过程
create   proc   工资查询   @职员姓名   char(10)= ' ',@日期   char(10)= ' '
as
begin
if   @职员姓名= ' '   and   @日期= ' '
begin
select   职员信息表.职员姓名,工资发放历史表.*   from   职员信息表   inner   join   工资发放历史表   on   职员信息表.职员编号=工资发放历史表.职员编号
return
end
else
if   @职员姓名!= ' '   and   @日期= ' '
begin
select   职员信息表.职员姓名,工资发放历史表.*   from   职员信息表   inner   join   工资发放历史表   on   职员信息表.职员编号=工资发放历史表.职员编号   and   职员信息表.职员姓名=@职员姓名
return
end
else
if   @职员姓名= ' '   and   @日期!= ' '
begin
select   职员信息表.职员姓名,工资发放历史表.*   from   职员信息表   inner   join   工资发放历史表   on   职员信息表.职员编号=工资发放历史表.职员编号   and   工资发放历史表.日期=@日期
return
end
else
begin
select   职员信息表.职员姓名,工资发放历史表.*   from   职员信息表   inner   join   工资发放历史表   on   职员信息表.职员编号=工资发放历史表.职员编号   and   工资发放历史表.日期=@日期   and   职员信息表.职员姓名=@职员姓名
return
end
end
我在C#里连接操作数据库
SqlConnection   conn=new   SqlConnection( "server=.;database=人力资源管理系统;uid=sa;pwd=; ");
try
{
conn.Open();
SqlCommand   comm=new   SqlCommand( "工资查询 ",conn);
comm.CommandType=CommandType.StoredProcedure;
comm.Parameters.Add( "@职员姓名 ",textBox1.Text);
comm.Parameters.Add( "@日期 ",textBox2.Text);
SqlDataAdapter   sda=new   SqlDataAdapter(comm);
DataSet   ds=new   DataSet();
sda.Fill(ds);
dataGrid1.DataSource=ds.Tables[ "工资发放 "].DefaultView;
}
catch(Exception   M)
{MessageBox.Show(M.Message);}


他却不行,请大家帮帮,先谢谢大家了,十万火急,在线等


------解决方案--------------------
dataGrid1.DataSource=ds.Tables[ "工资发放 "].DefaultView;
改为
dataGrid1.DataSource=ds.Tables[0].DefaultView;
试试
------解决方案--------------------
alter table B表 add constraint B表_con foreign key(编号)references A表(编号) on update cascade
楼主的问题添加一个级联更新就行了
------解决方案--------------------
去掉两个else
create proc 工资查询 @职员姓名 char(10)= ' ',@日期 char(10)= ' '
as
begin
if @职员姓名= ' ' and @日期= ' '
begin
select 职员信息表.职员姓名,工资发放历史表.* from 职员信息表 inner join 工资发放历史表 on 职员信息表.职员编号=工资发放历史表.职员编号
return
end
else--去掉
if @职员姓名!= ' ' and @日期= ' '
begin
select 职员信息表.职员姓名,工资发放历史表.* from 职员信息表 inner join 工资发放历史表 on 职员信息表.职员编号=工资发放历史表.职员编号 and 职员信息表.职员姓名=@职员姓名
return
end
else--去掉
if @职员姓名= ' ' and @日期!= ' '
begin
select 职员信息表.职员姓名,工资发放历史表.* from 职员信息表 inner join 工资发放历史表 on 职员信息表.职员编号=工资发放历史表.职员编号 and 工资发放历史表.日期=@日期
return
end
else
begin
select 职员信息表.职员姓名,工资发放历史表.* from 职员信息表 inner join 工资发放历史表 on 职员信息表.职员编号=工资发放历史表.职员编号 an